CPU使用率过高问题定位
1 CPU使用率过高问题定位
1.1 配合使用top+jstack定位(重要)
首先使用top
找到CPU使用率最高的进程。
接着查看36032进程的线程情况。
top -Hp 36032
找到36044线程CPU占用率最高,然后将线程号转为16进制。
# printf %x 36044
8ccc
最后,使用jstack dump 36032进程的日志到1.txt文件。匹配8ccc之后打印后面30行,从而定位到问题代码行数。
# jstack 36032 > 1.txt
# cat 1.txt | grep -A 30 8ccc
备注:top定位的线程号是十进制的,而jstack dump出来的是十六进制的。
1.2 使用JMC查看线程情况
利用JFR动态监控出线程情况。
1.3 CPU使用过高的场景
- 使用无限循环==>尽量避免
- 频繁GC,GC线程争用CPU资源==>降低GC频率
- 频繁创建新对象==>合理使用单例以及线程池
- 序列化和反序列化(例如解析操作)==>选用合理的API实现;选用好用的类库
- 不合理地使用正则表达式(正则表达式引擎在进行字符匹配时会发生回溯)==>尽量使正则匹配不回溯。
- 频繁的线程上下文切换。==>业务改造,减低频率。
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-01-03 Nginx负载均衡配置与算法