假设,服务器上部署了若干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%问题如何快速定位?相关推荐

  1. java 100% cpu_Java服务,CPU 100%问题如何快速定位?

    Java服务,有时候会遇到CPU 100%的问题,对于这样的问题,我们如何快速定位并解决呢?一般会有如下三个步骤: 1.找到最耗CPU的进程 2.找到这个进程中最耗CPU的线程 3.查看堆栈信息,定位 ...

  2. Java服务,CPU100%问题如何快速定位?

    上篇<Java服务,内存OOM问题如何快速定位?>发布后,有朋友在评论留言,问CPU100%的性能问题,如何找到相关服务,如何定位问题代码,也非常考验技术人的功底,今天简单说下思路. 假设 ...

  3. CPU100%,怎么快速定位?

    一台机器,CPU100%,如何找到相关服务,如何定位问题代码,今天简单分享下思路. 假设,服务器上部署了若干Java站点服务,以及若干Java微服务,突然收到运维的CPU异常告警.如何定位是哪个服务进 ...

  4. Java服务,内存OOM问题如何快速定位?

    Java服务,内存OOM问题如何快速定位? 原创作者: 58沈剑  来自公众号:架构师之路 最近有朋友在知识星球提问: 沈老师,有一个Java服务出现了OOM(Out Of Memory)问题,定位了 ...

  5. 面试1:Java、微服务、架构常见面试题(持续更新中)

    Java.微服务.架构常见面试题(持续更新中) 文章目录 Java.微服务.架构常见面试题(持续更新中) ==**Java**== 1.Java概述 (1)JVM.JRE和JDK (2)Java特点 ...

  6. Java基于socket服务实现UDP协议的方法

    转载自 Java基于socket服务实现UDP协议的方法 这篇文章主要介绍了Java基于socket服务实现UDP协议的方法,通过两个简单实例分析了java通过socket实现UDP发送与接收的技巧, ...

  7. java 拉起服务_技术开发者应该如何构建小团队的微服务方案?

    作者 | 徐鹏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 我们的产品是Linkflow,企业运营人员使用的客户数据平台(CDP).产品的一个重要部分类似企业版的"捷径&q ...

  8. android binder - 客户端(c++层) 调用 服务端(java层),服务端回调客户端 例子

    学习了: android binder - 客户端(java层) 调用 服务端(c++层) 例子 http://blog.csdn.net/ganyue803/article/details/4131 ...

  9. 基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA心灵治愈服务平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

最新文章

  1. java vuser脚本_loadrunner12中JavaVuser脚本的编写
  2. JQuery Event属性说明
  3. Android踩坑日记:Okhttp设置User-Agent你可能没遇到的坑
  4. 差分数组 and 树上差分
  5. Wannafly挑战赛22游记
  6. mysql 排序1.1.1_mysql中字符串1.1/1.2/1.2.2/1.2.5排序问题
  7. Java 数组中new Object[5]语句是否创建了5个对象?
  8. Linux Kernel 2.4 Internals
  9. 查看环境列表_西门子COMOS软件开发定制学习8-查询列表间的数据交互
  10. 从哪查找当前程序所有可用的环境变量?
  11. FreeRTOS-TaskNotify
  12. 让机器人告别乱碰乱撞,激光导航让扫地机“睁开双眼”
  13. 【信息学奥赛一本通 提高组】第三章 深搜的剪枝技巧
  14. ArcGIS裁剪时警告 warning001003:Datum conflict between input and output
  15. 如何在IPv6下观看网络电视直播
  16. docker安装常用命令docker网络
  17. 出大事了,涛哥你们Java应用GC后不释放内存
  18. 取十六进制的后两位数、中间两位数,以及高位数
  19. vscode error: You have not concluded your merge
  20. python怎么实现打开摄像头_python开启摄像头以及深度学习实现目标检测方法

热门文章

  1. 网络POS机如何让信用卡活跃起来的
  2. python replace函数的使用
  3. uvc led fabrication review
  4. ros2-Foxy安装教程
  5. 计算机的自带拍视频教程,在线网络课程视频如何录制?三种快速录制视频的方法...
  6. python缺少标准库_如何将python标准库缺失的进行导入?
  7. IE7 (WIN2003)中文版下载
  8. Java面试必问!mysql分页查询
  9. 如何利用pandas将速度提高10倍?
  10. 什么是智能代还软件APP呢?代还市场怎么样呢?