项目空负载服务器使用cpu过高

      最近一个同事反馈一台搭建项目基础服务的linux服务器,cpu负载非常高,其实这个项目中,几乎没有什么用户,就是一个IPO的环境;cpu负载高,为什么没有什么业务cpu的负载这么高,并且是个基础服务,而基础服务的运算类的业务非常低。

 排查:    这是什么问题,难道里面有递归调用之类的东西吗?看看其他项目组使用基础模块服务器的负载,发现服务器的负载非常低;那就不是服务的问题,现在就需要使用java的监控工具去排查,使用jmap 无法将内存信息导出,一直在报错;不管了试了几种方式,都不可用;那就直接使用jconsle在控制台上去看;一看发现很多FullGC的日志;fullGC那铁定会消耗cpu的资源;再使用jstat -gcutil pid 5000 去查看最近cpu  GC的情况:

 发现fgc 的频率非常高;在频繁的fgc那cpu的负载不高才怪;在看看伊甸园 、元空间 、老年代 的空间使用区域都在90% 以上,那肯定会造成垃圾回收频繁;再看一下启动参数:-XXs256m -XXm256 这启动一个springboot的项目简直了;修改启动参数,观察负载,cpu负载下来了。

总结:

     一开始任务,写好的脚本启动,这么低应该也可以,认为很合理,想着这是谁做的这么牛;结果打脸了,没有注意cpu负载,也没有oom我去,也是服了。启动之后其实我们应该关注一下服务器的负载,这样确实有助于我们的性能优化。

原文地址:https://www.cnblogs.com/lyd96321/p/15748051.html