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命令 # 立刻关 ...
随机推荐
- 201871030119-马桂婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
项目 内容 课程班级博客 2018卓越工程师班 这个作业要求链接 实验三 软件工程结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握Github协作开发程序的操作方法 ...
- SpringBoot 使用逆向工程 构建Mapper.xml Dao层(持久层) 实体类
逆向工程 注: 有数据库表即可 第一步为创建数据库表 (可选)使用PowerDesigner设计数据库表,物理模型构建 添加pom.xml 逆向工程生成代码插件 <!--plugin 逆向工程生 ...
- 【随笔】C++类静态成员变量初始化引发的惨痛教训
事情是这样的,我在某个类中声明了一个静态的map成员, 文件名暂且称之为 xxx.h 然后在 xxx.cc 中全局定义了这个东西,静态成员在类里面只是声明,需要在外边被定义才有内存 然后又在main. ...
- 做个开源博客学习Vite2 + Vue3 (三)博客设计和代码设计
项目搭建好了之后是不是可以编码了呢? 等等不要着急,我们是不是应该先设计一下?比如博客的功能等? 博客设计 先做个简单的个人博客,因为是个人版,所以可以省略注册.登录这些功能,表结构也可以简单一点. ...
- 技术分享|SQL和 NoSQL数据库之间的差异:MySQL(VS)MongoDB
在当今市场上,存在各种类型的数据库,选择适合你业务类型的数据库对应用的开发和维护有着重要意义.本篇文章,将为大家分享SQL和NoSQL语言之间的区别,同时还将比较这两种类型的数据库,以帮助小伙伴们选择 ...
- nginx 完美解决tp3.2.3 404问题
最近我把Apache给换成nginx,当我把tp项目搬过去运行的时候发现404 错误 ,原来是因为nginx不支持 pathinfo 模式,需要自己配置 下面我配置 在server配置里面 locat ...
- vuex 引用方法
引入Vuex(前提是已经用Vue脚手架工具构建好项目) 1.利用npm包管理工具,进行安装 vuex.在控制命令行中输入下边的命令就可以了. npm install vuex --save 要注意的是 ...
- 缓冲区溢出分析第09课:MS06-040漏洞研究——深入挖掘
前言 经过前两次的分析,我们已经对Netapi32.dll文件中所包含的漏洞成功地实现了利用.在系统未打补丁之前,这确实是一个非常严重的漏洞,那么打了补丁之后,这个动态链接库是不是就安全了呢?答案是否 ...
- LA3029最大子矩阵
题意: 给你一个n*m的矩阵<每个格子不是'F'就是'R'>,让你找一个最大的'F'矩阵,输出他的面积*3. 思路: 比较经典的题目了,现在想起来比较好想,以前的话 ...
- ZOJ3261并查集逆向处理
题意: 给你一些点,还有一些边,每个点上都有一个权值,然后有一些询问,分为两种, query a 询问与a直接或者间接想连的点中最大权值的是那个点,输出那个点,如果那个点的权值小于等于a的 ...