线上应用故障排查之一:高CPU占用
流程执行命令:
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占用相关推荐
- 线上应用故障排查之二:高内存占用
为什么80%的码农都做不了架构师?>>> 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2 ...
- Java线上应用故障排查之二:高内存占用
前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...
- Java线上应用故障排查之一:高内存占用
Java线上应用故障排查之一:高内存占用 转载地址:http://www.blogjava.net/hankchen 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMe ...
- linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高
摘自: 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识. 一.通过top命令定位占用cpu高的进程 执行top ...
- Java线上应用故障排查之一:高CPU占用
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...
- [转载]线上应用故障排查之一:高CPU占用
以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题. 根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障. 通过ps aux | grep PID命令,可以 ...
- 线上OOM故障排查——Curator retryPolicy的选择、Jute.maxBuffer的配置
本来悠闲地写着bug喝着茶的,突然被一连串报警信息打断. CPU使用率飙升.内存使用率超出阈值.服务未定时打印指定的日志内容(公司日志监控平台)等一系列报警... 因为CPU使用率飙升.内存使用率超出 ...
- 线上Java 高CPU占用、高内存占用排查思路
一.前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统 ...
- 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...
一:背景 1. 讲故事 昨天继续还技术债,优化一轮后的程序拉到线上后内存继续忽高忽低,低的时候20G,高的时候30G,过了一会又下降了几个G,毫无疑问,程序中有什么集合或者什么操作占用了大量内存,所以 ...
最新文章
- iOS -- 十进制、十六进制字符串,byte,data等之间的转换
- samba权限跟linux权限,linux之samba与linux权限
- 视频豪横时代,应用如何快速构建视频点播能力?
- Access-Control-Allow- 设置跨域资源共享CORS详解
- C#创建Access
- 面试了 N 个候选人后,我总结出这份 Java 面试准备技巧
- 再利用Chakra引擎绕过CFG
- LVQ,Learning Vector Quantization,学习向量量化
- Python 语言程序设计(4-3) Random 随机库
- 苹果Mac软件开发工具:Xcode 让开发者如虎添翼
- 简单的Spring配置文件
- 怎样给div增加resize事件
- 信赖铃音的PS2游戏目录2017.6
- UC浏览器去广告、联网、升级(支持新版8.1)
- 大一python选择题题库及答案_大学计算机python选择填空题库及答案
- flex布局,子元素撑开父元素
- 娃哈哈的困境,宗庆后的难题
- 基于MIMO的滤波器组多载波调制技术(后期将附上MATLAB代码)
- 决策树的ID3算法的应用
- 这一路走来,冷暖自知 (附算法demos)
热门文章
- 阿里云天池大赛——机器学习篇赛题解析(赛题一)下
- python画rgb渐变色_请问如何在matplotlib中画出自定义渐变色?
- 潘石屹这回是真的卖掉了“根”
- 计算机看到硬盘是空白状态,为你解决win7系统磁盘管理显示空白无法使用的处理方法...
- 二次冲击港交所,手握宝可梦、游戏王的云涌控股困于IP依赖
- 用Nero刻录ISO镜像制作启动光盘
- sql 语句中count()条件计数
- 生信笔记 | 探索PubMed数据库文献
- 2018年全国职业院校技能大赛中职组网络空间安全正式赛卷
- 微软统一打补丁的服务器,明白打补丁! 微软公布2月Win10/Win8.1/Win7更新详情