系统的平均负载

如何理解平均负载


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

平均负载多少合理


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

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

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

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

该关注哪个值

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

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

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

平均负载案例分析


对CPU的测试


  1. stress
  2. [root@fpm_nginx ~]# yum -y install stress
  3. # 模拟4个cpu核心全部占满的情况
  4. 终端1
  5. [root@fpm_nginx ~]# stress --cpu 4 --timeout 600
  6. 终端2
  7. [root@fpm_nginx ~]# watch -d uptime
  8. 10:16:06 up 3 min, 2 users, load average: 3.90, 1.68, 0.64
  9. mpstat # 查看cpu的实时使用情况
  10. [root@fpm_nginx ~]# yum install -y sysstat
  11. [root@fpm_nginx ~]# mpstat -P ALL 5
  12. # 每5s检查一次所有cpu,查看是用户还是系统导致的负载过高。
  13. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  14. 10:22:48 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. pidstat
  21. [root@fpm_nginx ~]# pidstat -u 5 1
  22. # 每5s输出一组数据,最后一组数据是平均值,查看是哪个程序导致的负载过高
  23. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  24. 10:28:25 AM UID PID %usr %system %guest %CPU CPU Command
  25. 10:28:30 AM 0 5819 0.20 0.00 0.00 0.20 2 vmtoolsd
  26. 10:28:30 AM 0 6650 100.00 0.20 0.00 100.00 3 stress
  27. 10:28:30 AM 0 6651 100.00 0.20 0.00 100.00 2 stress
  28. 10:28:30 AM 0 6652 99.60 0.20 0.00 99.80 0 stress
  29. 10:28:30 AM 0 6653 100.00 0.00 0.00 100.00 1 stress
  30. 10:28:30 AM 0 6656 0.00 0.40 0.00 0.40 0 pidstat
  31. Average: UID PID %usr %system %guest %CPU CPU Command
  32. Average: 0 5819 0.20 0.00 0.00 0.20 - vmtoolsd
  33. Average: 0 6650 100.00 0.20 0.00 100.00 - stress
  34. Average: 0 6651 100.00 0.20 0.00 100.00 - stress
  35. Average: 0 6652 99.60 0.20 0.00 99.80 - stress
  36. Average: 0 6653 100.00 0.00 0.00 100.00 - stress
  37. Average: 0 6656 0.00 0.40 0.00 0.40

对I/O的测试


  1. 600s之后退出
  2. stress --io 1 --timeout 600
  3. [root@fpm_nginx ~]# mpstat -P ALL 5
  4. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  5. 10:42:05 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
  6. 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
  7. 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
  8. 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
  9. 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. 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
  11. [root@fpm_nginx ~]# pidstat -u 3 4
  12. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  13. 10:43:02 AM UID PID %usr %system %guest %CPU CPU Command
  14. 10:43:05 AM 0 13 0.00 0.33 0.00 0.33 1 migration/1
  15. 10:43:05 AM 0 6119 0.00 0.33 0.00 0.33 2 tuned
  16. 10:43:05 AM 0 6405 0.00 0.33 0.00 0.33 2 sshd
  17. 10:43:05 AM 0 6630 0.00 8.28 0.00 8.28 1 kworker/u256:0
  18. 10:43:05 AM 0 6673 0.00 37.09 0.00 37.09 2 stress
  19. 10:43:05 AM 0 6674 0.00 17.88 0.00 17.88 0 kworker/u256:2
  20. 10:43:05 AM 0 6675 0.00 0.33 0.00 0.33 0 kworker/0:1
  21. 10:43:05 AM 0 6804 0.00 0.33 0.00 0.33 1 pidstat
  22. 注:磁盘的大量io会导致,负载的异常升高,比cpu的核心还高,会导致内核态的占比升高。

大量进程


  1. [root@fpm_nginx ~]# stress -c 4 --timeout 600
  2. # %idle 表示的是内核态
  3. [root@fpm_nginx ~]# mpstat -P ALL 5
  4. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  5. 11:02:02 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. [root@fpm_nginx ~]# pidstat -u 3 4
  12. Linux 3.10.0-957.el7.x86_64 (fpm_nginx) 04/22/2020 _x86_64_ (4 CPU)
  13. 11:02:25 AM UID PID %usr %system %guest %wait %CPU CPU Command
  14. 11:02:28 AM 0 5819 0.00 0.32 0.00 1.30 0.32 2 vmtoolsd
  15. 11:02:28 AM 0 6119 0.00 0.32 0.00 0.00 0.32 2 tuned
  16. 11:02:28 AM 0 7950 97.40 0.00 0.00 0.97 97.40 3 stress
  17. 11:02:28 AM 0 7951 98.05 0.32 0.00 0.32 98.38 0 stress
  18. 11:02:28 AM 0 7952 98.05 0.32 0.00 0.65 98.38 2 stress
  19. 11:02:28 AM 0 7953 98.38 0.32 0.00 0.32 98.70 1 stress
  20. 11:02:28 AM 0 8013 0.32 0.32 0.00 0.32 0.65 3 pidstat
  21. # 大量进程会导致用户态升高

总结:

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

linux系统的负载详解的更多相关文章

  1. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  2. MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

  3. linux系统开机流程详解

    今天,我们主要来谈谈计算机系统的启动流程 1.BIOS启动 BIOS是写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序).开机的时候,BIOS是计算机系统会主动执行的第一个程序.BIOS主要 ...

  4. Linux系统僵尸进程详解

    大安好,我是良许. 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程. Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念:程序. 程序说白了就是躺在电脑硬 ...

  5. Linux系统守护进程详解ntsysv 可以关掉那些服务

    acpid, haldaemon, messagebus, klogd,network, syslogd  以上几个服务必须开启!其他的分析如下: 1.NetworkManager,NetworkMa ...

  6. Linux系统监控命令详解

    1. top命令 top命令经常用来监控Linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 输 ...

  7. linux系统date命令详解

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

  8. Linux系统的信号详解

    一.信号类型 1) SIGHUP       2) SIGINT       3) SIGQUIT     4) SIGILL        5) SIGTRAP 6) SIGABRT      7) ...

  9. Linux—系统关机命令详解

    不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...

随机推荐

  1. Dynamics CRM报表提示rsProcessingAborted解决方法

    有时候CRM用的好好的突然报表提示了一个错误,rsProcessingAborted如下图: 开始以为是权限问题,在数据库捣鼓了很长时间,服务也重启了很多遍都没效果.后来试了一下重新安装一下报表服务器 ...

  2. Java【IO流、字节流、字符流】

    1.内存是临时存储 Input输入(读取) output输出(输出) 流:数据(字符字节)1个字符=2个字节 1个字节=8个二进制位 输入:把硬盘中的数据读取到内存中 输出:把内存中的数据写入到硬盘中 ...

  3. Debian10 安装MyCLI

    1 概述 Debian10安装MyCLI. 环境: Debian10 Python3.7 2 准备环境 2.1 Python 首先确保安装了Python: apt install python3 若是 ...

  4. 解决CentOS虚拟机无法显示本地IP问题

    1 问题描述 CentOS虚拟机无法显示本地ip,如图: 2 尝试过的方法 参考过此处的解决方法,把网卡配置中的ONBOOT修改为YES: 但是原来的网卡配置也是YES,所以修改的方法没有用,尝试了一 ...

  5. (十三)Docker容器进入的4种方式

    简介 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见 ...

  6. 图解Leetcode组合总和系列——回溯(剪枝优化)+动态规划

    Leetcode组合总和系列--回溯(剪枝优化)+动态规划 组合总和 I 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 ...

  7. Linux安装MySQL8高版本压缩包(通用)

    前言 前段时间领导让我部署测试环境,希望安装高版本的MySQL,过程遇到很多问题,特此记录帮助迷失的人们 下载 MySQL官方下载地址:https://dev.mysql.com/downloads/ ...

  8. composer 遇见问题 整理

    修改镜像源:改为阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 报错:Con ...

  9. 【SpringBoot】SpringBoot 处理后端返回的小数(全局配置 + 定制化配置)

    一.抛出问题: 现在的项目中,存在这样的几个问题: 问题一.数据库存的数据类型是BigDecimal,或者代码中计算需要返回BigDecimal的值,由于BigDecimal返回给前端可能存在精度丢失 ...

  10. hdu4403暴力搜索

    题意:      给你一个数字串,让你在里面添加一个=和若干个+,使等式成立. 思路:      lmax最大是15,直接暴搜,无压力,关键是判重,要在答案的时候判重,一开始在进队列之前判的,各种wa ...