posts - 22, comments - 32, trackbacks - 0, articles - 71
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

生产服务CPU100%问题快速定位

Posted on 2018-12-10 15:59 为自己代言 阅读(169) 评论(0)  编辑  收藏 所属分类: Linux/mysql调优
或者按Shift+p公司生产服务上常常出现 CPU 100% 问题,需要快速定位问题出现在那里,以下备注解决方法步骤:

1: 工具:top方法:
执行top -c ,显示进程运行信息列表
键入P (大写p),进程按照CPU使用率排序  (输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)
线上服务CPU100%问题快速定位实战
如上图找出最耗CPU 进程 10765
统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48当前时间
up 1:22系统运行时间,格式为时:分
1 user当前登录用户数
load average: 0.06, 0.60, 0.48系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

步骤二:找出最耗CPU的线程
  1.    top -Hp 10765 显示一个进程的线程运行信息列表
  2. 键入shift +p 线程按照CPU使用率降序排序
 步骤三: 把 10765 转化成16进制(因为堆栈是线程id是十六进制)
     命令: printf '%x' 10765   输出结果:2a0d

步骤四: 使用JVM命令  jstatck 
            jstack 10765 | grep '2a0d' -C5 --color     打印堆栈信息,通过id 过滤到线程的堆栈信息。


以下是top 其它常用命令:

附常用操作:

top   //每隔5秒显式所有进程的资源占用情况
top -d 2 //每隔2秒显式所有进程的资源占用情况
top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -p 1111 -p 6789//每隔5秒显示pid是1111和pid是6789的两个进程的资源占用情况
top -d 2 -c -p 1111//每隔2秒显示pid是1111的进程的资源使用情况,并显式该进程启动的命令行参数        

只有注册用户登录后才能发表评论。


网站导航: