一次通过jstack 和 pslist定位程序问题

10年征战背景..........................

     短时间进行elasticsearch插入没有问题。
     可是连续插入几个小时候,cpu好的飞起。360加速器都要爆炸。
 
 
先声明原帖   http://blog.csdn.net/ningzuobei/article/details/48828915
 
1   没办法,邮件任务管理器,资源管理器。发现了猫腻。java.exe的进程占据了接近百分之80的cpu。
还好我能看到她的进程号。我的是5460.
 
 
2  我需要知道这个进程在做些什么,通过cmd命令  jstack 5460 > E:\test\resource.log  (C盘可能不行)。  这样得到一段时间内这个进程做的事情。直接打开看是无头绪的。
 
3    我们需要揪出这个进程里面那个线程在做怪 通过pstools工具, 微软官方网址 http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx 下载 ,有帖子说 下载完将其解压到C:\Windows\System32路径下即可使用。但是我好像不行,我是把这个解压到 C:\Windows\System32这个路径下,并且把里面的pslist.exe复制到 C:\Windows\System32目录下才行。 在cmd命令窗口中执行命令: pslist -dmx 5460  找到使用Cswtch最多的两个running线程  。记下他们的线程号。  
 
4  10进制的线程号需要换成16进制的 。 打开自带的计算器-查看-程序员。把它换成16进制的。转换的结果可能是纯数字,也可能带字母
 
 
5  打开我们获得的resouce.log文件。Notepad++打开为好。查找我们转换的16进制线程号 。找到nid= 0x线程号。下面的内容就是想要的结果
 
posted @ 2020-06-04 15:01  妖君你好  阅读(151)  评论(0编辑  收藏  举报