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
# 大量进程会导致用户态升高
总结:
- 平均负载高有可能是CPU密集型进程导致的
- 平均负载高并不一定代表CPU的使用率就一定高,还有可能是I/O繁忙
- 当发现负载高时,可以使用mpstat、pidstat等工具,快速定位到,负载高的原因,从而做出处理
linux系统的负载详解的更多相关文章
- LINUX系统VMSTAT命令详解
linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1 1表示每秒采集一次vms ...
- MySQL在Linux系统下配置文件详解
在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...
- linux系统开机流程详解
今天,我们主要来谈谈计算机系统的启动流程 1.BIOS启动 BIOS是写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序).开机的时候,BIOS是计算机系统会主动执行的第一个程序.BIOS主要 ...
- Linux系统僵尸进程详解
大安好,我是良许. 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程. Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念:程序. 程序说白了就是躺在电脑硬 ...
- Linux系统守护进程详解ntsysv 可以关掉那些服务
acpid, haldaemon, messagebus, klogd,network, syslogd 以上几个服务必须开启!其他的分析如下: 1.NetworkManager,NetworkMa ...
- Linux系统监控命令详解
1. top命令 top命令经常用来监控Linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 输 ...
- linux系统date命令详解
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...
- Linux系统的信号详解
一.信号类型 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) ...
- Linux—系统关机命令详解
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中.将数据由内存同步写入到硬盘中. [root@localhost ~]# sync 一.shutdown命令 # 立刻关 ...
随机推荐
- 004-Java中的运算符
@ 目录 一.运算符 一.分类 二.算数运算符 三.关系运算符 四.逻辑运算符 五.赋值运算符 六.条件运算符(三目运算符) 七.+运算符 一.运算符 一.分类 二.算数运算符 加 $+$ 减 $ ...
- 2.7w字!Java基础面试题/知识点总结!(2021 最新版)
这篇<Java 基础知识总结>是 JavaGuide 上阅读量最高的一篇文章,由于我对其进行了重构完善并且修复了很多小问题,所以,在博客园再同步一下! 文章内容比较多,目录如下: 基础概念 ...
- kubernetes addons之node-problem-detector
node-problem-detector简介 node-problem-detector的作用是收集k8s集群管理中节点问题,并将其报告给apiserver.它是在每个节点上运行的守护程序.node ...
- JMeter日志查看
- PHP版DES算法加密数据
php7之后的版本 php的mcrypt 扩展已经过时了大约10年,并且用起来很复杂.因此它被废弃并且被 OpenSSL 所取代. 从PHP 7.2起它将被从核心代码中移除并且移到PECL中.PHP手 ...
- 【Spring】 Spring如何解决循环依赖的问题?
https://mp.weixin.qq.com/s/FtbzTMxHgzL0G1R2pSlh-A 通常来说,如果问Spring内部如何解决循环依赖,一定是单默认的单例Bean中,属性互相引用的场景. ...
- ip协议是哪一层的协议
IP协议对应于OSI标准模型的网络层. TCP/IP: 数据链路层:ARP,RARP 网络层: IP,ICMP,IGMP 传输层:TCP ,UDP,UGP 应用层:Telnet,FTP,SMTP,SN ...
- hdu4848 DFS 暴搜+ 强剪枝
题意: 给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路: ...
- PAT 乙级 -- 1001 -- 害死人不偿命的(3n+1)猜想
题目: 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年 ...
- POJ1236 强连通 (缩点后度数的应用)
题意: 一些学校有一个发送消息的体系,现在给你一些可以直接发送消息的一些关系(单向)然后有两个问题 (1) 问你至少向多少个学校发送消息可以让所有的学校都得到消息 (2) 问至少加多少条边 ...