Linux系统性能分析
1.uptime
uptime主要用户获取系统的运行时间和查询系统负载信息
[admin@localhost ~]$ uptime
11:48:52 up 49 min, 2 users, load average: 0.00, 0.02, 0.11
系统当前时间 当前系统运行49分钟 当前有2个用户在登录使用 过去一分钟的平均负载 过去五分钟的平均负载 过去十五分钟的平均负载
2.w
w与uptime相比多了用户的具体详情
[admin@localhost ~]$ w
11:57:18 up 57 min, 3 users, load average: 0.01, 0.02, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
admin :0 :0 11:25 ?xdm? 3:09 2.94s /usr/libexec/gn
admin pts/0 :0 11:25 6.00s 0.17s 0.01s w
admin pts/1 192.168.8.220 11:55 2:14 0.05s 0.05s -bash
负载说明:
系统的平均负载意思是特定时间内运行队列的平均进程数,满足以下三个条件它就会位于运行队列中:
1.它没有在等待I/O操作的结果
2.没有主动进入等待状态
3.没有被停止
指标
一半建议每个CPU活动进程数不超过0.8,大于1小于3时候,如果系统其他资源正常也还能接受,大于5的话就不能接受了。
一个四核的cpu为例,大于15的话也是不能接受的。
[admin@localhost ~]$ uptime |awk '{print $(NF-2)}'
0.00,
[admin@localhost ~]$ uptime |awk '{print $(NF-1)}'
0.05
[admin@localhost ~]$ uptime |awk '{print $(NF)}'
0.03,
筛出1分钟、5分钟、15分钟的负载情况
3.top
top包含了上述的一些信息,而且还可以看到cpu,内存等运行情况
小技巧1:按下大键盘的1,可以看到系统的每个核运行情况,看cpu占用率要分析每个核的剩余空间 id那块指标,剩余越少被占用的越多
小技巧2:找到占用cpu最大的那个进程的pid,输入top -p PID 可以看到对应进程下的线程使用情况
小技巧3:如果是java程序,可以用jstack指令对应那条线程pid,查看线程的状态,如果出现大量阻塞、等待就有问题了
小技巧4:可以用jvm自带的工具jvisualvm分析threaddump的情况,更加简洁方便,用MAT可以分析heapdump情况
4.性能分析步骤


浙公网安备 33010602011771号