jstack排查高cpu占用

当发现Java进程CPU占用率异常时,通过`top`命令定位到高占用线程,使用`jstack`分析发现线程频繁调用`poll()`方法导致CPU资源消耗。解决方案是改用带有超时的`poll(long timeout, TimeUnit unit)`或阻塞的`take()`方法,以减少CPU轮询,优化后进程CPU利用率恢复正常。" 101547134,695969,Flutter:控件叠加事件处理解析,"['Flutter开发', 'UI设计', '事件交互', '前端框架']
摘要由CSDN通过智能技术生成

jstack排查高cpu占用

目录

背景

修改jvm参数(新生代与老年代比例)时,看到一台机器java进程的CPU占比时刻保持在300%,觉得不太正常,因此学习排查。

排查过程

在线上六台机器中选择一台机器进行排查,top如下:
top信息
发现进程178的cpu占用率在304.3%,查看其具体占用高的线程 top -Hp pid
top -Hp 178
发现线程pid为806(326),766(2fe),826(33a)的线程占用资源较高,用jstack追踪一下 jstack pid | grep 线程pid16进制,得到如下结果:
jstack pid | grep 线程pid16进制
在代码中找到对应的方法,查看了逻辑,发现有sleep操作,对阻塞队列取数据的方法为poll:<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值