如何通过solaris自带的命令,迅速定位模块问题

来源:互联网 发布:java爬虫代理ip池 编辑:程序博客网 时间:2024/05/10 04:35

作者: uNDeaD
Email: someonebw@gmail.com
Blog: http://blog.csdn.net/undead
转载请注明出处

 

异常情况:

湖北移动 168 的机器发型异常情况,就是 Bwisp ,主容器的进程 CPU 占有率一直保持在 50 %,

高居不下,和其他省份的主容器 CPU 占用保持在 1 %,相差了近 50 倍,遂进一步来查明原因

1.  监控系统,发现问题
通过系统自带的监控系统资源占用命令: prstat

执行结果:(此图 bwisp 主容器进程正常)



2.查看是此进程的哪个线程导致,通过命令 prstat 的微观模式来查看此进程的情况,出问题的时候,此进程的 PID 22376 ,执行命令: prstat -mL –p 22376 2 ,执行结果如图:


3.  可以看到此进程中,的第 37 线程,占用情况达到了 93 %,很可能有问题,不正常!

通过系统命令 pstack 命令,来看看此进程中, 37 线程,调用的具体函数
执行命令: pstack 22376 ,执行结果如下:(列出关键部分)

---------------------------------------------------------

-----------------  lwp# 37 / thread# 37  --------------------

  fee45c98 __time   (faffbf74, 1, 0, fc6b8, 0, fb072ec4) + 8

  fb054354 _Z13checkAndWritePv (0, 0, 0, 2, fb0542d4, fb05b738) + 80

  fee457f8 _lwp_start (0, 0, 0, 0, 0, 0)

---------------------------------------------------------

 

大家可以看到,标红的地方,就是 37 线程当前调用的函数,标记黄色的地方,就是出问题的函数调用,下一步,我们需要此处内存,具体分配给了哪个插件使用!

 

通过系统的 pmap 命令,得到系统的内存分配映射情况,执行命令: pmap -x -s 22376
得到如下结果:

 


 

通过上一步我们可以判断,出问题的地方为:

fb054354 _Z13checkAndWritePv (0, 0, 0, 2, fb0542d4, fb05b738) + 80

系统分配的为 fb05 开头的内存空间,

可以看到 pmap 后,标红的地方为:

FB030000      72      72       -       -   8K r-x--  libywdata.so

FB042000       8       8       -       -    - r-x--  libywdata.so

FB044000       8        8       -       -   8K r-x--  libywdata.so

FB046000       8       8       -       -    - r-x--  libywdata.so

FB048000      80      80       -       -   8K r-x--  libywdata.so

FB06A000      16      16      16       -   8K rwx--  libywdata.so

FB06E000       16       8       -       -    - rwx--  libywdata.so

FB072000       8       8       8       -   8K rwx--  libywdata.so


FB03 FB07 的空间,都分配给了 libywdata.so 插件, FB05 在其之间,可以判断

出问题的插件,应该就是 libywdata.so 文件了!

 

将相应的命令执行后的情况,发给相关开发人员后,开发人员迅速定位问题的所在,此 BUG 迅速解决!

原创粉丝点击