当前位置:网站首页>【help】JVM的CPU资源占用过高问题的排查
【help】JVM的CPU资源占用过高问题的排查
2022-06-27 17:58:00 【掘金者说】
JVM的CPU资源占用过高问题的排查
jstack命令格式:
jstack [ option ] pid
参数说明:
-F jstack [-l] pid无法响应时,强制打印堆栈
-l l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表.
-m 混合模式输出(包括java和本地c/c++片段)堆栈。
pid: java应用程序的进程号
参数是互斥的,不能联合使用。
jstack生成的Thread Dump日志结构解析
jstack -l 25440 > c:/25440.stack
2021-02-01 10:14:10
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.231-b11 mixed mode):
"MySQL Statement Cancellation Timer" #513 daemon prio=5 os_prio=0 tid=0x0000000020de0800 nid=0x2e74 in Object.wait() [0x0000000069e0f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:502)
at java.util.TimerThread.mainLoop(Timer.java:526)
- locked <0x00000006e18d6598> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:505)
Locked ownable synchronizers:
- None
"Druid-ConnectionPool-Destroy-968174377" #459 daemon prio=5 os_prio=0 tid=0x0000000020de0000 nid=0x32e8 waiting on condition [0x000000006311f000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:2824)
Locked ownable synchronizers:
- None
"Druid-ConnectionPool-Create-968174377" #458 daemon prio=5 os_prio=0 tid=0x0000000020dd9000 nid=0x16e4 waiting on condition [0x000000006301f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000006c3ee6cd8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2728)
Locked ownable synchronizers:
- None
jstack -F PID > c:/jstack.25440.txt 查询IN_VM进行查找相关类方法排查
Attaching to process ID 25440, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.231-b11
Deadlock Detection:
No deadlocks found.
Thread 133: (state = BLOCKED)
- java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be imprecise)
- java.lang.Object.wait() @bci=2, line=502 (Compiled frame)
- java.util.TimerThread.mainLoop() @bci=28, line=526 (Interpreted frame)
- java.util.TimerThread.run() @bci=1, line=505 (Interpreted frame)
Thread 95: (state = BLOCKED)
- com.****.patrol.util.PatrolHelper.getRuleByTime(com.****patrol..entity.StatRule, java.time.LocalDateTime) @bci=430, line=304 (Compiled frame; information may be imprecise)
- com.****.patrol.util.PatrolHelper.getStatRule(java.util.List, java.time.LocalDateTime) @bci=51, line=226 (Compiled frame)
- com.****.service.impl.InspectServiceImpl.getCalendarData(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime) @bci=252, line=226 (Compiled frame)
- com.****.patrol.controller.InspectController.getCalendarData(java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime) @bci=78, line=127 (Interpreted frame)
Thread 93: (state = BLOCKED)
- sun.misc.Unsafe.park(boolean, long) @bci=0 (Compiled frame; information may be imprecise)
- java.util.concurrent.locks.LockSupport.park(java.lang.Object) @bci=14, line=175 (Compiled frame)
- java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await() @bci=42, line=2039 (Compiled frame)
- java.util.concurrent.LinkedBlockingQueue.take() @bci=29, line=442 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.getTask() @bci=149, line=1074 (Compiled frame)
- java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=26, line=1134 (Interpreted frame)
- java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=624 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=748 (Interpreted frame)
Thread 92: (state = IN_VM)
- com.****.patrol.util.PatrolHelper.getRuleByTime(com.****.patrol.entity.StatRule, java.time.LocalDateTime) @bci=430, line=304 (Compiled frame; information may be imprecise)
- com.****.patrol.util.PatrolHelper.getStatRule(java.util.List, java.time.LocalDateTime) @bci=51, line=226 (Compiled frame)
- com.****.patrol.service.impl.InspectServiceImpl.getCalendarData(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime) @bci=252, line=226 (Compiled frame)
- com.****.patrol.controller.InspectController.getCalendarData(java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime) @bci=78, line=127 (Interpreted frame)
查找com.****.patrol.service.impl.InspectServiceImpl.getCalendarData方法进行排查…
附件参考
参考 Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析
参考 JVM故障分析及性能优化系列
参考 ThreadDump: How to see the condition of waiting / or any other condition?
参考 JVM的CPU资源占用过高问题的排查
参考 Java CPU占用过高问题排查,windows和Linux
边栏推荐
- ABAP-CL_OBJECT_COLLECTION工具类
- 教你打印自己的日志 -- 如何自定义 log4j2 各组件
- 使用MySqlBulkLoader批量插入数据
- Implementation of reliable distributed locks redlock and redisson
- 【云驻共创】 什么是信息化?什么是数字化?这两者有什么联系和区别?
- NVIDIA Clara-AGX-Developer-Kit installation
- How to encapsulate and call a library
- Pyhton爬取百度文库文字写入word文档
- Is it safe to buy stocks online and open an account?
- Character interception triplets of data warehouse: substrb, substr, substring
猜你喜欢

The Fifth Discipline: the art and practice of learning organization

Error reported by Huada MCU Keil_ Weak's solution

Erreur Keil de Huada Single Chip Computer La solution de Weak

Introduction to deep learning and neural networks

What is ICMP? What is the relationship between Ping and ICMP?

Bit.Store:熊市漫漫,稳定Staking产品或成主旋律

External interrupt experiment based on stm32f103zet6 library function

“我让这个世界更酷”2022华清远见研发产品发布会圆满成功

带你认识图数据库性能和场景测试利器LDBC SNB

华大单片机KEIL报错_WEAK的解决方案
随机推荐
1028 List Sorting
openssl客户端编程:一个不起眼的函数导致的SSL会话失败问题
如何封裝調用一個庫
Is it safe to buy stocks online and open an account?
External interrupt experiment based on stm32f103zet6 library function
binder hwbinder vndbinder
Pyhton爬取百度文库文字写入word文档
redis集群系列二
海底电缆探测技术总结
Labelimg usage guide
Redis 原理 - String
Cucumber自动化测试框架使用
运算符的基础知识
1024 Palindromic Number
UE4-Actor基础知识
买股票在券商经理的开户链接上开户安全吗?求大神赐教
PyCharm常用功能 - 断点调试
C# 二维码生成、识别,去除白边、任意颜色
华大单片机KEIL报错_WEAK的解决方案
作为软件工程师,给年轻时的自己的建议(下)