docker java程序cpu过高排查

最近程序出现跑个几个小时就会出现cpu过高100%,要调试下程序,以前使用jdk工具很容易找到cpu100%的线程堆栈,可以分析代码,现在使用docker封装应用,这样jdk就没有,只有最小体积的jre,而且也不好在docker里面安装工具。后面只能使用java visualvm来远程调试,在docker开放端口号。接下来就是监视,监视结果

docker java程序cpu过高排查

红色线是出行cpu100时候, 蓝色和黄色线是正常情况。从经验判断可能是因为内存不够导致频繁GC,因为一般CPU高的线程只有一个,实际看到有4个,所以这个和GC线程在运行有相关性。所以把java的内存设置到1G跑了10几个小时后也没有出现CPU高的问题,而且监视结果如上图很平滑,没有出现规律锯齿状线条。