整机
- top命令
看%CPU 、%MEM,cpu与内存的占用比
load average:1min,5min,15min系统平均负载值,如果3值相加*100%超过60%,说明负载过重
- uptime(top精简,load average)
CPU
-
vmstat
例: vmstat -n 2 3(每2s采样一次,共计采样3次)
-
mpstat -P ALL 2
查看所有CPU消耗数,每2s采样一次(idel值,即空闲率越高越好) -
pidstat -u | -p [进程号]
用户每秒钟采样一次,进程CPU消耗数
内存(Memory)
- free
大小单位kb
- free -g
大小单位G(保留整数)
- free -m
大小单位M(四舍五入,推荐)
- pidstat -p 进程号 -r 采样间隔秒数
硬盘
- df (查看磁盘空间)
- df -h
磁盘IO
- iostat -xdk 2 3
每2s取样一次,共计取样3次
- pidstat -d 采样间隔次数 -p 进程号
网络IO
- ifstat
面试题:
- 假如生产环境出现CPU占用过高,请谈谈分析思路和定位
结合Linux和JDK命令一块分析
①用top命令找出CPU占比最高的
②ps -ef或jps进一步定位,得知是一个怎样的后台程序给我们惹事,记录PID(进程号)
③定位到具体线程或者代码
ps -mp 进程编号 -o THREAD,tid,time
结果集中得出哪个线程TID,花费时间time最长
-o 用户自定义显示列
④将需要的线程ID转换为16进制格式(英文小写格式)
printf"%x\n"有问题的线程ID(TID)
⑤jstack 进程ID | grep tid(16进制,小写英文) -A60(前60行)