zoukankan      html  css  js  c++  java
  • linux系统的负载详解


    系统的平均负载

    如何理解平均负载


    ​ 单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。

    平均负载多少合理


    核心数 平均负载 含义
    4 2 有50%的cpu是空闲状态,见图一
    2 2 CPU刚好被完全占用,见图二
    1 2 至少有一半的进程抢不到cpu资源,见图三

    就像是有四条马路, 有两辆小车在上面跑,这个时候交通很畅通,不会堵车。

    现在有两条马路,上面有两辆汽车,这个时候刚好合适。

    现在有两条马路,四量汽车,马路已经跑满了,后面的就堵住了。

    该关注哪个值

    1、如果1min,5min,15min的数值相差不大,表示系统的负载很“稳定”

    2、如果近1min的值小于近15min的值证明系统负载的,平均负载在逐渐降低,但是在前15min的负载过高原因需要知道。

    3、如果近15min的值,远小于近1min的值,说明负载在升高,有可能是临时的也有可能会不停的升高。


    平均负载案例分析


    对CPU的测试


    stress
    [root@fpm_nginx ~]# yum -y install stress
    
    # 模拟4个cpu核心全部占满的情况 
    终端1
    [root@fpm_nginx ~]# stress --cpu 4 --timeout 600
    终端2
    [root@fpm_nginx ~]# watch -d uptime
    10:16:06 up 3 min,  2 users,  load average: 3.90, 1.68, 0.64
    
    
    mpstat # 查看cpu的实时使用情况
    [root@fpm_nginx ~]# yum install -y sysstat
    
    [root@fpm_nginx ~]# mpstat -P ALL 5
    # 每5s检查一次所有cpu,查看是用户还是系统导致的负载过高。
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    10:22:48 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    10:22:53 AM  all    0.00    0.00    0.05    0.00    0.00    0.00    0.00    0.00    0.00   99.95
    10:22:53 AM    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    10:22:53 AM    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    10:22:53 AM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    10:22:53 AM    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
    
    pidstat
    [root@fpm_nginx ~]# pidstat -u 5 1
    # 每5s输出一组数据,最后一组数据是平均值,查看是哪个程序导致的负载过高
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    10:28:25 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    10:28:30 AM     0      5819    0.20    0.00    0.00    0.20     2  vmtoolsd
    10:28:30 AM     0      6650  100.00    0.20    0.00  100.00     3  stress
    10:28:30 AM     0      6651  100.00    0.20    0.00  100.00     2  stress
    10:28:30 AM     0      6652   99.60    0.20    0.00   99.80     0  stress
    10:28:30 AM     0      6653  100.00    0.00    0.00  100.00     1  stress
    10:28:30 AM     0      6656    0.00    0.40    0.00    0.40     0  pidstat
    
    Average:      UID       PID    %usr %system  %guest    %CPU   CPU  Command
    Average:        0      5819    0.20    0.00    0.00    0.20     -  vmtoolsd
    Average:        0      6650  100.00    0.20    0.00  100.00     -  stress
    Average:        0      6651  100.00    0.20    0.00  100.00     -  stress
    Average:        0      6652   99.60    0.20    0.00   99.80     -  stress
    Average:        0      6653  100.00    0.00    0.00  100.00     -  stress
    Average:        0      6656    0.00    0.40    0.00    0.40 
    
    

    对I/O的测试


    600s之后退出
    stress --io 1 --timeout 600
    
    [root@fpm_nginx ~]# mpstat -P ALL 5
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    10:42:05 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    10:42:10 AM  all    0.10    0.00   13.27    0.00    0.00    0.05    0.00    0.00    0.00   86.58
    10:42:10 AM    0    0.00    0.00    8.56    0.00    0.00    0.00    0.00    0.00    0.00   91.44
    10:42:10 AM    1    0.00    0.00   11.51    0.00    0.00    0.00    0.00    0.00    0.00   88.49
    10:42:10 AM    2    0.21    0.00   12.63    0.00    0.00    0.00    0.00    0.00    0.00   87.16
    10:42:10 AM    3    0.21    0.00   20.68    0.00    0.00    0.00    0.00    0.00    0.00   79.11
    
    [root@fpm_nginx ~]# pidstat -u 3 4
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    10:43:02 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
    10:43:05 AM     0        13    0.00    0.33    0.00    0.33     1  migration/1
    10:43:05 AM     0      6119    0.00    0.33    0.00    0.33     2  tuned
    10:43:05 AM     0      6405    0.00    0.33    0.00    0.33     2  sshd
    10:43:05 AM     0      6630    0.00    8.28    0.00    8.28     1  kworker/u256:0
    10:43:05 AM     0      6673    0.00   37.09    0.00   37.09     2  stress
    10:43:05 AM     0      6674    0.00   17.88    0.00   17.88     0  kworker/u256:2
    10:43:05 AM     0      6675    0.00    0.33    0.00    0.33     0  kworker/0:1
    10:43:05 AM     0      6804    0.00    0.33    0.00    0.33     1  pidstat
    
    注:磁盘的大量io会导致,负载的异常升高,比cpu的核心还高,会导致内核态的占比升高。
    

    大量进程


    [root@fpm_nginx ~]# stress -c 4 --timeout 600
    
    
    # %idle 表示的是内核态
    [root@fpm_nginx ~]# mpstat -P ALL 5
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    11:02:02 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
    11:02:07 AM  all   99.72    0.00    0.11    0.00    0.00    0.17    0.00    0.00    0.00    0.00
    11:02:07 AM    0   99.55    0.00    0.23    0.00    0.00    0.23    0.00    0.00    0.00    0.00
    11:02:07 AM    1   99.78    0.00    0.00    0.00    0.00    0.22    0.00    0.00    0.00    0.00
    11:02:07 AM    2   99.55    0.00    0.23    0.00    0.00    0.23    0.00    0.00    0.00    0.00
    11:02:07 AM    3  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
    
    [root@fpm_nginx ~]# pidstat -u 3 4
    Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 	04/22/2020 	_x86_64_	(4 CPU)
    
    11:02:25 AM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
    11:02:28 AM     0      5819    0.00    0.32    0.00    1.30    0.32     2  vmtoolsd
    11:02:28 AM     0      6119    0.00    0.32    0.00    0.00    0.32     2  tuned
    11:02:28 AM     0      7950   97.40    0.00    0.00    0.97   97.40     3  stress
    11:02:28 AM     0      7951   98.05    0.32    0.00    0.32   98.38     0  stress
    11:02:28 AM     0      7952   98.05    0.32    0.00    0.65   98.38     2  stress
    11:02:28 AM     0      7953   98.38    0.32    0.00    0.32   98.70     1  stress
    11:02:28 AM     0      8013    0.32    0.32    0.00    0.32    0.65     3  pidstat
    
    # 大量进程会导致用户态升高
    

    总结:

    1. 平均负载高有可能是CPU密集型进程导致的
    2. 平均负载高并不一定代表CPU的使用率就一定高,还有可能是I/O繁忙
    3. 当发现负载高时,可以使用mpstat、pidstat等工具,快速定位到,负载高的原因,从而做出处理




  • 相关阅读:
    区间K 大数查询
    最大最小公倍数
    吃糖果
    身份证号码升级
    威威猫系列之 吃鸡腿
    小Q系列之失恋
    查询7天之内的数据
    WebService案例 Spring boot+CXF开发WebService Demo
    开发过程中遇到问题
    oracle 自增序列 sequence
  • 原文地址:https://www.cnblogs.com/gshelldon/p/13278751.html
Copyright © 2011-2022 走看看