cpu飙升,排查经历。

    一个合作公司,项目是使用nginx和两台tomcat负载,其中一台服务器cpu飙升,然后导致部分用户访问页面很卡,超时,甚至500。

    解决经历:

    将nginx配置文件更改,取下来那台cpu很高的服务器。用户这时可以正常使用,现在专心排查问题。

    使用ps -ef | grep java 命令得到java进程号,

然后使用top -H -p java进程号 命令得到当前进程使用cpu较高的线程。(因为现在已经解决了问题,所以截图的cpu使用率不高)


记下使用cpu使用比较高的线程id(PID),

执行 jstack java进程号 >> 文件名.txt ,将进程线程使用情况输出到文件内


3. 把记下的线程id转成16进制,去线程堆栈里面找,可以看到当前线程在干嘛。

然后在继续排查,具体原因是因为什么。当时我遇见的情况是gc一直再执行,而且内存也超了。一步步排查,确定是转化文档出问题,一个excel文档内有上百万空表格。对他进行了一个限制。然后就没再出过问题。