Posted on 2018-12-10 15:59
为自己代言 阅读(180)
评论(0) 编辑 收藏 所属分类:
Linux/mysql调优
或者按Shift+p公司生产服务上常常出现 CPU 100% 问题,需要快速定位问题出现在那里,以下备注解决方法步骤:
1: 工具:top方法:
• 执行top -c ,显示进程运行信息列表
•
键入P (大写p),进程按照CPU使用率排序 (
输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)
如上图找出最耗CPU 进程 10765
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
01:06:48 | 当前时间 |
up 1:22 | 系统运行时间,格式为时:分 |
1 user | 当前登录用户数 |
load average: 0.06, 0.60, 0.48 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
步骤二:找出最耗CPU的线程- top -Hp 10765 显示一个进程的线程运行信息列表
- 键入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的进程的资源使用情况,并显式该进程启动的命令行参数