JAVA cpu 100%,怀疑是GC的时候出的问题,求教高手。

leeking888 leeking888 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
描述:
1.在Linux中运行jboss中的web项目,里面有一个socket服务。
2.在程序运行一段时间后,大概20个小时左右,会把CPU资源占用到100%。
3.我用top -Hp <pid>的方式把该进程的所有线程都显示出来,然后发现几个占用CPU资源特别大的线程tid,把tid转换为hex格式后是57a9,在jstack命令中过滤内容出来(jstack <pid> | grep -A 100 57a9),显示的是


"VM Thread" prio=10 tid=0x00007f06d8089000 nid=0x57b9 runnable

"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f06d801b800 nid=0x57a9 runnable

"GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f06d801d800 nid=0x57aa runnable

"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f06d801f800 nid=0x57ab runnable

"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f06d8021000 nid=0x57ac runnable

"GC task thread#4 (ParallelGC)" prio=10 tid=0x00007f06d8023000 nid=0x57ad runnable

"GC task thread#5 (ParallelGC)" prio=10 tid=0x00007f06d8024800 nid=0x57ae runnable

"GC task thread#6 (ParallelGC)" prio=10 tid=0x00007f06d8026800 nid=0x57af runnable

"GC task thread#7 (ParallelGC)" prio=10 tid=0x00007f06d8028800 nid=0x57b0 runnable

"GC task thread#8 (ParallelGC)" prio=10 tid=0x00007f06d802a000 nid=0x57b1 runnable

"GC task thread#9 (ParallelGC)" prio=10 tid=0x00007f06d802c000 nid=0x57b2 runnable

"GC task thread#10 (ParallelGC)" prio=10 tid=0x00007f06d802e000 nid=0x57b3 runnable

"GC task thread#11 (ParallelGC)" prio=10 tid=0x00007f06d802f800 nid=0x57b4 runnable

"GC task thread#12 (ParallelGC)" prio=10 tid=0x00007f06d8031800 nid=0x57b5 runnable

"GC task thread#13 (ParallelGC)" prio=10 tid=0x00007f06d8033800 nid=0x57b6 runnable

"GC task thread#14 (ParallelGC)" prio=10 tid=0x00007f06d8035000 nid=0x57b7 runnable

"GC task thread#15 (ParallelGC)" prio=10 tid=0x00007f06d8037000 nid=0x57b8 runnable

"VM Periodic Task Thread" prio=10 tid=0x00007f06d80bf800 nid=0x57c0 waiting on condition

JNI global references: 1128

...全文

相关推荐

【MySQL面试第二弹】MySQL 服务占用cpu 100%,如何排查问题?

推荐阅读学习:MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒! 一、引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 二、问题复现 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口超时报警等。此时急需快速线上排查问题。 三、问题排查 不管什么问题,既然是CPU飙升,肯定是查一下耗CPU的线程,然后看看GC。 3.1 核心排查步骤 执行top命令:查看所有进程占系统CPU的排序。极大可能排第一个的就

weixin_38666230

Java线上CPU 100%排查指南[可运行源码]

本文详细介绍了Java线上项目CPU 100%问题的排查与解决方案。作者通过亲身经历,分享了从问题定位到实战优化的全流程。首先,通过系统命令如`top`和`jstack`快速定位高CPU线程,并转换为十六进制匹配线程堆栈。其次,分析了CPU飙升的五大常见原因,包括无限循环、正则表达式失控、频繁GC等。最后,提供了代码层防御性编程、JVM参数优化和监控告警体系建设三大解决方案,帮助开发者从被动救火转向主动防御。文章还强调了建立系统化排查体系的重要性,包括预防、监控、应急和复盘四个阶段,有效提升服务可用性。

rgv2345678

Java进程cpu占用过高问题解决

主要介绍了Java进程cpu占用过高问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

weixin_38643141

Java项目CPU过高排查[可运行源码]

本文详细介绍了Java线上项目CPU占用率过高问题的排查思路和解决过程。项目是一个网关系统,负责接收并转发监控数据。问题表现为接口无响应,CPU占用率超过100%。排查步骤包括使用top命令定位高CPU进程、分析线程堆栈、检查GC情况、使用MAT工具分析内存dump等。最终发现是由于Redis地址变更导致垃圾数据过滤逻辑失效,大量未过滤数据进入线程队列,导致GC频繁触发和CPU飙升。解决方案包括修复Redis数据过滤逻辑和调整堆内存配置,成功将CPU恢复至正常水平。

embedding5hiker

aix环境java进程cpu瓶颈分析

馨香花开
评论 22
收藏 已收藏
分享
返回顶部
leeking888
Web 开发 81,108 成员 341,721 内容