流程执行命令:

1.top  查到pid 28555
2.ps aux|grep 28555 确定到是tomcat的进程
3.显示线程列表 ps -mp 28555 -o THREAD,tid,time   查到tid 28802
4. printf "%x\n" 28802 将线程id,tid进行16进制转换
5.jstack pid |grep tid -A 30 显示堆栈信息 jstack 28555 |grep 28802 -A 30

详细解释看下文:

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。

以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。

根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。

通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?

首先显示线程列表:

ps -mp pid -o THREAD,tid,time

找到了耗时最高的线程28802,占用CPU时间快两个小时了!

其次将需要的线程ID转换为16进制格式:

printf "%x\n" tid

最后打印线程的堆栈信息:

jstack pid |grep tid -A 30

找到出现问题的代码了!

最后,总结下排查CPU故障的方法和技巧有哪些:

1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。

2、ps命令: Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。

3、jstack:  Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。

4、pstack:Linux命令。可以查看某个进程的当前线程栈运行情况。

线上应用故障排查之一:高CPU占用相关推荐

  1. 线上应用故障排查之二:高内存占用

    为什么80%的码农都做不了架构师?>>>    搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2 ...

  2. Java线上应用故障排查之二:高内存占用

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...

  3. Java线上应用故障排查之一:高内存占用

    Java线上应用故障排查之一:高内存占用 转载地址:http://www.blogjava.net/hankchen 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMe ...

  4. linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高

    摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...

  5. Java线上应用故障排查之一:高CPU占用

    一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...

  6. [转载]线上应用故障排查之一:高CPU占用

    以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令,可以 ...

  7. 线上OOM故障排查——Curator retryPolicy的选择、Jute.maxBuffer的配置

    本来悠闲地写着bug喝着茶的,突然被一连串报警信息打断. CPU使用率飙升.内存使用率超出阈值.服务未定时打印指定的日志内容(公司日志监控平台)等一系列报警... 因为CPU使用率飙升.内存使用率超出 ...

  8. 线上Java 高CPU占用、高内存占用排查思路

    一.前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统 ...

  9. 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...

    一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...

最新文章

  1. iOS -- 十进制、十六进制字符串,byte,data等之间的转换
  2. samba权限跟linux权限,linux之samba与linux权限
  3. 视频豪横时代,应用如何快速构建视频点播能力?
  4. Access-Control-Allow- 设置跨域资源共享CORS详解
  5. C#创建Access
  6. 面试了 N 个候选人后,我总结出这份 Java 面试准备技巧
  7. 再利用Chakra引擎绕过CFG
  8. LVQ,Learning Vector Quantization,学习向量量化
  9. Python 语言程序设计(4-3) Random 随机库
  10. 苹果Mac软件开发工具:Xcode 让开发者如虎添翼
  11. 简单的Spring配置文件
  12. 怎样给div增加resize事件
  13. 信赖铃音的PS2游戏目录2017.6
  14. UC浏览器去广告、联网、升级(支持新版8.1)
  15. 大一python选择题题库及答案_大学计算机python选择填空题库及答案
  16. flex布局,子元素撑开父元素
  17. 娃哈哈的困境,宗庆后的难题
  18. 基于MIMO的滤波器组多载波调制技术(后期将附上MATLAB代码)
  19. 决策树的ID3算法的应用
  20. 这一路走来,冷暖自知 (附算法demos)

热门文章

  1. 阿里云天池大赛——机器学习篇赛题解析(赛题一)下
  2. python画rgb渐变色_请问如何在matplotlib中画出自定义渐变色?
  3. 潘石屹这回是真的卖掉了“根”
  4. 计算机看到硬盘是空白状态,为你解决win7系统磁盘管理显示空白无法使用的处理方法...
  5. 二次冲击港交所,手握宝可梦、游戏王的云涌控股困于IP依赖
  6. 用Nero刻录ISO镜像制作启动光盘
  7. sql 语句中count()条件计数
  8. 生信笔记 | 探索PubMed数据库文献
  9. 2018年全国职业院校技能大赛中职组网络空间安全正式赛卷
  10. 微软统一打补丁的服务器,明白打补丁! 微软公布2月Win10/Win8.1/Win7更新详情