平均负载:指的是单位时间内系统处于可运行状态和不可中断状态的进程的数量。
(不可中断其实是系统对进程和硬件设备的一种保护机制。)
可以使用 :man uptime 来查看解释:
Linux 下使用: uptime
10:49:44 up 当前时间
312 days,16:48 系统运行的时间
1 user:当前用户的数量
load average:1.69,2.11,2.18 分别表示 1分钟,5分钟,15分钟的平均负载数。(这里这么高是因为又中了挖矿病毒)
建议在高于cup个数的70%的时候,就应该去排查问题,因为负载过高会导致进程性能降低。应该将其监控起来,分析历史记录,这样的话比较合理。
平均负载和cpu使用率的区别:
在cpu密集型进程的时候,这两者是没有区别的。
在i/o密集型进程的时候,cpu的使用率并高,但是I/O等待会导致平均负载升高。
大量等待cpu调度的进程,也会导致,平均负载和cpu的使用率升高。
mpstat是cpu的分析工具,pidstat是进程的分析工具(cpu,内存,i/o,上下文切换的性能指标)
stress是linux的压力测试工具,在这里起模拟异常进程,制造平均负载升高的情景。
三个终端打开同一个服务器。
模拟cpu密集型进程:
终端1:stress -- cpu 1 --timeout 600 模拟cpu使用率100%的场景。
终端2:mpstat -P ALL 5 1 。-P ALL 查看所有的cpu,5 1每五秒输出一次。
终端3:pisdstat -u 5 1:。5 1每五秒输出一次,查看是什么进程导致cpu使用率这么高。
分析发现是stress。
模拟I/O密集型进程:
终端1:stress --i 1 --timeout 600 这次模拟I/O压力,即不断的sysnc。
终端2:watch -d uptime 看到平均负载升高。
终端3:pisdstat -u 5 1:。5 1每五秒输出一次,查看是什么进程导致cpu使用率这么高。mpstat -P ALL 5 1
cpu分析时候发现i/owait升高,进程分析是什么使i/owait升高,同时发现cpu和系统调用升高,大致可以分析出是I/O密集型进程导致的。分析是stress
模拟大量进程:
终端1:stress --c 8 timeout 600 ,8个进程
终端2:uptime,看到平均负载升高。
终端3:pidstat -u 5 1 。看到%wait等待的数值很高。
多个进程对应少量cpu的时候,会导致cpu过载。导致平均负载过高。分析是stress