经常遇到一种情况,就是程序上线了,随着访问量的增加,中间件服务器的负载急剧升高.
这个时候服务器很卡,却不知道卡在哪里,调整代码更无从谈起.
首先,先找到中间件的进程.
[root@centos6 ~]# jps -l
或者
[root@centos6 ~]# top
应该都可以找到中间件的进程号(PID)

然后
top -p pid
按下shift+h 查看线程信息
[root@centos6 ~]# top -p 18810

找到CPU使用率较高的线程ID,以18818为例
在Linux执行命令,得到16进制的线程ID
printf 0x%x 18818
结果:0x4982
然后使用jstack指定中间件进程ID(PID)导出jvm信息
[root@centos6 ~]# jstack 18810 > jstack.log
[root@centos6 ~]# grep 0x4982 jstack.log
可以从日志中找到堆栈信息,从而定位到问题的代码
参考:
http://www.iteye.com/topic/1132321
http://jameswxx.iteye.com/blog/1041173

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-1411158/
,如需转载,请注明出处,否则将追究法律责任。