在windows下web程序占用CPU的性能调试

之前在公司内部分享平台发一篇在生产环境排查的CPU性能问题的文章,比较通用,转到CSDN上与大家分享

问题

         业务系统的Tomcat服务器跑了一段时间后,发现业务系统进程占用的CPU资源在70%-80%,加上自助,移动端和报表,整个服务器的CPU处理将近100%运行状态。用户使用时非常慢。

问题查找

通过process explorer查看Tomcat进程下的线程

下载地址: https://technet.microsoft.com/en-us/sysinternals/bb896653/

汉化后的版本:http://download.csdn.net/detail/p_3er/9169985

下载后直接打开运行就可以了。

图一 process explorer主界面

 

点开tomcat进程:

图二:进程查看

现在服务器处于正常状态,无CPU占用过高的线程,我们以4920 TID线程为例,下面我们要通过jstack把进程下所以的Java线程栈的内容打印出文本中。

可以通过图一发现该tomcat进程pid为5936

图三 查看pid

 

打开命令行,输入jstack -l 5936  > D:/java.stack

 

图四 jstack –l

打开java.stack

通过process explorer获取到的线程TID对应的是stack文本线程栈描述内容中的tid的十进制值。

 

我们把TID为4920转成十六进制为1338,然后在stack文本搜索1338,,找到此线程栈的描述内容为:

 

图五 查找线程描述

这里都是正常的,如果是不正常的,可以根据描述查看相关代码,进行优化。类似图六,可以查看异常代码所在行数。

 

图六 查看异常代码所在行数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章