线上cpu使用率100%如何排查
CPU 如何 排查 线上 使用率 100%
2023-06-13 09:14:08 时间
自从使用滴滴开源的夜莺监控系统之后,偶尔会收到cpu报警的邮件,姜同学分析了一下原因大多都是java进程进入了循环或是死锁而得不到释放造成的,接下来姜同学就模拟下cpu使用率超过100%以及两种方案的排查过程。
一段陷入循环的代码
是第19行哦
使用Top和(JDK自带的)jstack定位原因
toc -c 找到cpu使用率最高的进程
toc -c
获得PID 4487
top -Hp pid 找到进程中cpu占用率最高的线程
top -Hp 4487
获得cpu使用率最高的线程ID 4500
将十进制的线程id转为16进制
使用top工具查找到的线程id都是二进制滴,但是java堆栈日志里面的线程ID都是16进制滴,所以为了定位具体的堆栈信息我们将十进制的线程ID转为16进制滴。
printf "%x\n" 4500
jstack查看堆栈
jstack pid | grep "16进制的线程ID" -C5 --color
很快就定位到了咱们上面陷入循环的第19行代码。
使用阿里开源的arthas快速定位
如果你的运气不错服务器上面有arthas,并且内存并没有因为cpu的问题而爆表,那么你将会更便捷的定位到问题的原因。 arthas的官方文档https://arthas.aliyun.com/doc/,上面有他更强大的功能以及详细的使用方式。
启动arthas
java -jar arthas-boot.jar
启动之后发现了我们服务器上面java进程 输入1即可进入对应的java进程
thread -n 3 打印出最忙的三个线程
3你可以换成 4,5,6展示的就是前4,5,6个线程你懂我的意思吧。
很快又定位到了我们陷入循环的第19行代码。
相关文章
- Cpu指令重排_cpu的指令集
- cpu参数_CPU核心参数有哪些
- 如何排查CPU占用100%
- 英伟达CPU问世:ARM架构,对比x86实现十倍性能提升
- 如何了解CPU的三级缓存?
- Apple开源了用于ARM CPU的iOS内核详解手机开发
- Linux查看CPU使用情况的方法(linux怎么看cpu)
- 过高MongoDB CPU 利用率过高问题排查(mongodb占用cpu)
- 探索Linux下查看CPU型号的方式(linux如何查看cpu型号)
- 使用率Linux下掌握CPU使用率的命令技巧(linux命令查看cpu)
- 信息Linux系统深入探索:查看CPU信息(linux系统查看cpu)
- 优化最佳化Linux CPU性能:实现更快、更稳定的体验(linuxcpu性能)
- 占用cpuLinux查看线程CPU占用情况:一步搞定(linux如何查看线程)
- 数Linux查看CPU线程数:简单操作指南(linux查看cpu线程)
- Oracle购买CPU:分析CPU性能以保障企业运算(oracle购买cpu)
- 如何在 Linux 中找出 CPU 占用高的进程
- Google自研的TPU速度比GPU和CPU快15倍至30倍
- 教你如何在Linux上查看CPU信息(linux看cpu)
- 如何在 Linux 下查看 CPU 频率信息(linux看cpu频率)
- 优化技巧大揭秘:linux多线程CPU使用完全指南(linux多线程cpu)
- 如何查询Oracle数据库CPU数量?(oracle cpu数量)
- Linux实现多核CPU的绑定(linux绑定cpu)
- 深入Linux:如何查询CPU的使用率?(linux查询cpu使用率)
- CPU连接MySQL的正确姿势(cpu如何连接mysql)
- 负载利用Oracle优化CPU利用率(oracle 使用cpu)
- Redis引发的CPU负载飙升(redis造成cpu暴增)