windows中Java服务CPU占用过高调优

最近发现线上一个部署在windows实例上的客户端服务占用CPU在70%~80%,造成本机卡顿。
排查过程如下
环境:

Windows2007版
JDK-1.8
Tomcat版本8.5.34(springboot版本2.0.5)

根据服务PID查找占用进程最高的线程:

查找具体线程信息可查阅:windows中查看CPU占用过高的线程
经排查,以下三个线程占用cpu达到了60%
线程tid信息
线程信息如下:
tid=7976
tid=4348
tid=332
如上图所示,占用cpu较高的线程均为NIO线程,去查看了很多由于tomcat版本造成CPU过高的相关博文。
记一次tomcat版本问题导致CPU超过100%
Java NIO浅析
apache-bugzilla-60030
断网故障时Mtop触发tomcat高并发场景下的BUG排查和修复(已被apache采纳)
等。

原因可能是windows环境下,JDK1.8+tomcat8.5.34版本中有NIO-bug问题。

博文汇总有以下处理方案:

  • tomcat版本升至8.5.5
  • 从NIO模式切换为NIO2模式
    均不适用于我们的情况,无法处理CPU过高的情况

最终处理方案:

限制该Java服务对CPU的使用率 + 设置该服务的JVM参数。
JVM参数如下:

-XX:MetaspaceSize=200m
-XX:MaxMetaspaceSize=400m
-Xmx1000M
-Xms1000M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值