Linux集群和自动化维1.4.4 Linux下CPU使用率与机器负载的关系与区别

简介:

1.4.4 Linux下CPU使用率与机器负载的关系与区别


 笔者的线上竞标业务机器,在业务最繁忙的一段周期内,发现Nginx单机并发活动的连接数超过了2.6万,机器负载(基本上不到4,Nagios监控系统并没有发送报警邮件和短信)和Nginx+Lua服务都是正常的,网卡流量并没有打满,但流量就是怎么也打不进去。经过深入观察,发现这段时期内每台机器的CPU利用率都已经很高了,基本都维持在99%~100%左右,这种情况应该是CPU资源耗尽了,导致不能再继续提供服务,所以这里有必要研究下CPU负载和CPU利用率这两个概念的关系与区别。

CPU负载和CPU利用率虽然是两个不同的概念,但它们的信息可以显示在同一个top命令中。CPU利用率显示的是程序在运行期间实时占用的CPU百分比,而CPU负载显示的则是一段时间内正在使用和等待使用CPU的平均任务数。CPU利用率高,并不意味着负载就一定大。

网上有篇文章提供了一个有趣的比喻,即通过打电话来说明两者的区别,下面笔者按照自己的理解来阐述一下。

某公用电话亭,有一个人在打电话,四个人在等待,每人限定使用电话一分钟,若有人一分钟之内没有打完电话,则只能挂掉电话去排队,等待下一轮。电话在这里就相当于CPU,而正在或等待打电话的人就相当于任务数。

在电话亭的使用过程中,肯定会有人打完电话走掉,有人没有打完电话而选择重新排队,更会有新增的人在这儿排队,这个人数的变化就相当于任务数的增减。为了统计平均负载情况,我们5秒钟统计一次人数,并在第1、5、15分钟的时候对统计情况取平均值,从而形成第1、5、15分钟的平均负载。有的人拿起电话就打,一直打完一分钟;而有的人可能前三十秒在找电话号码,或者在犹豫要不要打,后三十秒才真正在打电话。如果把电话看作CPU,人数看作任务,就可以说前一个人(任务)的CPU利用率高,后一个人(任务)的CPU利用率低。

当然,CPU并不会在前三十秒工作,后三十秒歇着,只是说,有的程序涉及大量的计算,所以CPU利用率就高,而有的程序涉及计算的部分很少,CPU利用率自然就低。但无论CPU的利用率是高还是低,都跟后面有多少任务在排队没有必然关系。

CPU负载为多少才算是比较理想的呢?对于这个问题,业界一直存在争议,各有各的说法,个人比较赞同CPU负载小于等于0.5算是一种理想的状态。

不管某个CPU的性能有多好,1秒钟能处理多少个任务,我们都可以认为它无关紧要,虽然事实并非如此。在评估CPU负载时,我们只以5秒钟为单位来统计任务队列长度。如果每隔5秒钟统计的时候,发现任务队列的长度都是1,那么CPU负载就为1。假如只有一个单核的CPU,负载一直为1,那就意味着没有任务在排队,这说明目前机器系统负载还不错。还是以上面提到的竞标业务机器为例,都是四核机器,每个内核的负载为1的话,则总负载为4。也就是说,如果那些竞标服务器的CPU负载长期保持在4左右,还是可以接受的。

CPU使用率达到多少才算比较理想?

建议统计%user+%system的值(后面的章节有相关的Shell脚本),如果长期大于85%的话,就可以认为系统的CPU负载过重,这个时候就可以考虑添加物理CPU或增添业务集群机器了。

相关文章
|
3月前
|
数据管理 Linux iOS开发
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
56 0
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
|
5月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
1086 1
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
9月前
|
存储 监控 Linux
在Linux中,可以使用哪个命令查看系统的历史负载?
在Linux中,可以使用哪个命令查看系统的历史负载?
|
6月前
|
芯片
浮动CPU和定点CPU的主要区别是什么
浮动CPU和定点CPU的主要区别在于处理数据的方式不同。浮动CPU支持浮点运算,能高效处理小数和高精度计算;而定点CPU仅支持整数运算,适用于对精度要求不高的场景。
|
6月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
332 3
|
7月前
|
机器学习/深度学习 人工智能 并行计算
CPU和GPU的区别
【10月更文挑战第14天】
|
8月前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
345 2
WK
|
9月前
|
监控 Ubuntu Linux
Linux系统平均负载如何查看?
在Linux系统中,有多种命令可用于查看平均负载,包括实时和历史数据。常用方法有:`uptime`命令显示系统运行时间和平均负载;`top`命令实时监控系统进程和资源使用;`w`命令展示用户信息及负载;通过`cat /proc/loadavg`查看特定文件中的负载信息;`sar`命令提供详尽的系统资源监控;而`htop`则以交互方式展示系统负载和资源使用情况。这些工具帮助用户全面了解系统性能状态。
WK
163 2
|
9月前
|
监控 Linux
性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
【8月更文挑战第18天】性能分析之 Linux 系统中 ps&top 中 CPU 百分比不一致?
389 5
|
9月前
|
负载均衡 网络协议 Linux
在Linux中,常用WEB服务器负载架构有哪些?
在Linux中,常用WEB服务器负载架构有哪些?