如何通过top 和 jstack 确定哪些线程耗尽CPU
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇文章给大家分享的是有关如何通过top 和 jstack 确定哪些线程耗尽CPU,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。背景线上
千家信息网最后更新 2025年02月23日如何通过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安全错误
数据库的锁怎样保障安全
2022梦幻新区开服务器列表
软件开发各大城市需求
桂林软件开发服务商
战地5服务器怎么开启
平南县星图网络技术
ktv服务器怎么调歌
抢票软件开发原理
南浔雨禾网络技术服务部
洛阳星际网络技术有限公司
网络安全技术简称
和平精英刺激战场直播服务器
襄阳有软件开发公司吗
深泽应用软件开发服务技术规范
可以用服务器来打吃鸡游戏吗
桐庐php软件开发工程师
威海文登软件开发
网络安全意识培养主题班会教案
服务器配合
太仓口碑好的软件开发信息推荐
悦游网络技术有限公司
专升本数据库技术基础
中软飞腾服务器
网络技术考试题
2019年软件开发书单
表格每一行增加一行数据库
文件目录数据库表格怎么做
gis软件开发是什么
项目软件开发前期工作
hp服务器uid报警
私企学软件开发