如何通过top 和 jstack 确定哪些线程耗尽CPU
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇文章给大家分享的是有关如何通过top 和 jstack 确定哪些线程耗尽CPU,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。背景线上
千家信息网最后更新 2025年01月22日如何通过top 和 jstack 确定哪些线程耗尽CPU
本篇文章给大家分享的是有关如何通过top 和 jstack 确定哪些线程耗尽CPU,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
背景
线上集群 load 会突然飙升,CPU 使用率 100%,无法响应正常请求,然后服务器宕机。
那么引起 load 飙升的线程究竟在做什么?哪些线程霸占了CPU?可以通过 top 和 jstack 命令进行定位。
定位步骤
1. top 找出占用 CPU 高的进程 PID
2. top -p PID -H 命令查出进程中占用CPU最高的线程
3. 根据线程ID(需要十进制转成十六进制),从线程栈中找出步骤2查出的线程
printf 0x%x 43845
4. jstack -l PID 命令打印出线程栈
发现是大量 GC 线程在运行。
为什么是 GC 线程呢?
最终定位问题是,调用数据库查询方法 List queryForList(Query query) 拉取大量数据集合加载到内存,这些集合数据还都是小数据。小数据首先被 JVM 加载到年轻代,但年轻代内存很快就占满,JVM 进行 yongGC,数据被转移到老年代,但老年代内存也很快被占满,JVM 有进行 full GC,由此造成雪崩,内存占用率 100%,CPU 使用率 100%。
以上就是如何通过top 和 jstack 确定哪些线程耗尽CPU,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
线程
数据
内存
命令
定位
年轻
使用率
年代
很快
更多
步骤
知识
篇文章
进程
实用
最高
十六进制
十进制
可以通过
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器进入安全模式快捷键
一流的计算机软件开发电话
荣耀新三国服务器开放时间
软件开发技术分流
信息会考网络技术应用题
信息网络安全防护宣传
软件开发各阶段的图
精进软件开发
提交数据库安全隐患怎么解决
Max脚本如何下载服务器文件
互联网技术属于网络技术吗
网络安全道德心得分析
机关网络安全使用制度
高效网络安全运维哪里有
asp软件开发员招聘
软件开发总结不足之处怎么写
多玩mc服务器地址
黑河启动网络安全应急演练
软件开发类有什么
七部门进驻滴滴开展网络安全审
对数据库的认识英文
网易免费企业邮箱服务器
数据数据库
scum一个服务器有多少玩家
什么是软件过程和软件开发周期
网络安全法 东软 答案
服务器的系统使用
网络安全年会总结
浙江点睛互联网科技有限公司
中国医保信息业务编码标准数据库