java 100% cpu_Java服务,CPU100%问题如何快速定位?
假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警。如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载?
简要步骤如下:
(1)找到最耗CPU的进程;
(2)找到最耗CPU的线程;
(3)查看堆栈,定位线程在干嘛,定位对应代码;
步骤一、找到最耗CPU的进程
工具:top
方法:
执行top -c ,显示进程运行信息列表
键入P (大写p),进程按照CPU使用率排序
图示:
如上图,最耗CPU的进程PID为10765。
步骤二:找到最耗CPU的线程
工具:top
方法:
top -Hp 10765 ,显示一个进程的线程运行信息列表
键入P (大写p),线程按照CPU使用率排序
图示:
如上图,进程10765内,最耗CPU的线程PID为10804。
步骤三:查看堆栈,定位线程在干嘛,定位对应代码
首先,将线程PID转化为16进制。
工具:printf
方法:printf "%x\n" 10804
图示:
如上图,10804对应的16进制是0x2a34,当然,这一步可以用计算器。
之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。
接着,查看堆栈,找到线程在干嘛。
工具:jstack
方法:jstack 10765 | grep '0x2a34' -C5 --color
打印进程堆栈
通过线程id,过滤得到线程堆栈
图示:
如上图,找到了耗CPU高的线程对应的线程名称“AsyncLogger-1”,以及看到了该线程正在执行代码的堆栈。
最后,根据堆栈里的信息,找到对应的代码,搞定!
java 100% cpu_Java服务,CPU100%问题如何快速定位?相关推荐
- java 100% cpu_Java服务,CPU 100%问题如何快速定位?
Java服务,有时候会遇到CPU 100%的问题,对于这样的问题,我们如何快速定位并解决呢?一般会有如下三个步骤: 1.找到最耗CPU的进程 2.找到这个进程中最耗CPU的线程 3.查看堆栈信息,定位 ...
- Java服务,CPU100%问题如何快速定位?
上篇<Java服务,内存OOM问题如何快速定位?>发布后,有朋友在评论留言,问CPU100%的性能问题,如何找到相关服务,如何定位问题代码,也非常考验技术人的功底,今天简单说下思路. 假设 ...
- CPU100%,怎么快速定位?
一台机器,CPU100%,如何找到相关服务,如何定位问题代码,今天简单分享下思路. 假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警.如何定位是哪个服务进 ...
- Java服务,内存OOM问题如何快速定位?
Java服务,内存OOM问题如何快速定位? 原创作者: 58沈剑 来自公众号:架构师之路 最近有朋友在知识星球提问: 沈老师,有一个Java服务出现了OOM(Out Of Memory)问题,定位了 ...
- 面试1:Java、微服务、架构常见面试题(持续更新中)
Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...
- Java基于socket服务实现UDP协议的方法
转载自 Java基于socket服务实现UDP协议的方法 这篇文章主要介绍了Java基于socket服务实现UDP协议的方法,通过两个简单实例分析了java通过socket实现UDP发送与接收的技巧, ...
- java 拉起服务_技术开发者应该如何构建小团队的微服务方案?
作者 | 徐鹏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 我们的产品是Linkflow,企业运营人员使用的客户数据平台(CDP).产品的一个重要部分类似企业版的"捷径&q ...
- android binder - 客户端(c++层) 调用 服务端(java层),服务端回调客户端 例子
学习了: android binder - 客户端(java层) 调用 服务端(c++层) 例子 http://blog.csdn.net/ganyue803/article/details/4131 ...
- 基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
最新文章
- java vuser脚本_loadrunner12中JavaVuser脚本的编写
- JQuery Event属性说明
- Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑
- 差分数组 and 树上差分
- Wannafly挑战赛22游记
- mysql 排序1.1.1_mysql中字符串1.1/1.2/1.2.2/1.2.5排序问题
- Java 数组中new Object[5]语句是否创建了5个对象?
- Linux Kernel 2.4 Internals
- 查看环境列表_西门子COMOS软件开发定制学习8-查询列表间的数据交互
- 从哪查找当前程序所有可用的环境变量?
- FreeRTOS-TaskNotify
- 让机器人告别乱碰乱撞,激光导航让扫地机“睁开双眼”
- 【信息学奥赛一本通 提高组】第三章 深搜的剪枝技巧
- ArcGIS裁剪时警告 warning001003:Datum conflict between input and output
- 如何在IPv6下观看网络电视直播
- docker安装常用命令docker网络
- 出大事了,涛哥你们Java应用GC后不释放内存
- 取十六进制的后两位数、中间两位数,以及高位数
- vscode error: You have not concluded your merge
- python怎么实现打开摄像头_python开启摄像头以及深度学习实现目标检测方法