一、平均负载基本概念
平均负载是指单位时间内,系统处于R状态与D状态的平均进程数,与cpu使用率无关,进程状态可使用ps -aux查看。
平均负载理想状态下等于cpu个数,cpu个数可通过cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 查看,例如在2个cpu的机器上,平均负载为1,那么cpu有50%的空闲,当平均负载大于cpu个数时,表示系统出现过载,过载超过cpu数量70%时,需要排查负载过高问题。
top命令中load average三个参数分别代表过去 1 分钟、5 分钟、15 分钟的平均负载。如果三个参数值差距不大,表示系统负载平稳,当1分钟的值比5分钟或15分钟的值小很多,表示最近1分钟负载减少,反之表示最近1分钟负载增加
二、平均负载案例
1.cpu密集型
可通过stress工具使用stress --cpu 1 --timeout 300命令模拟cpu使用率100%场景,top或pidstat -u 2 10查看平均负载及cpu占用情况。
2.io密集型
stress -i 1 --timeout 300 模拟io密集型进程,top查看平均负载,io使用率需通过mpstat -P ALL 5 10(5秒统计一次,统计10次)查看。
当iowait较高时使用pidstat -d 2 10找到对应进程。
3.大量进程
stress -c 8 --timeout 600模拟8个进程,top或pidstat -u 2 10查看平均负载以及进程占用情况。
三、总结
当服务器响应缓慢时可先通过top或pidstat -u 2 10查看cpu以及平均负载情况,对于cpu占用不高,但平均负载较高情况,考虑是否io密集型应用导致,可通过mpstat -P ALL 5 10查看io使用率,也可通过pidstat -d 2 10直接找到对应进程。
-bash: mpstat: command not found 可通过 yum -y install sysstat安装
stress使用:https://blog.csdn.net/shaofei_huai/article/details/118528252