平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等 。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常 。大部分情况下,在问题发生之前,某些指标就会提前有异常显示 。
对于这些指标的理解和查看、异常解决等,是程序员们重要的必备技能 。本文,主要来介绍一下一个比较重要的指标——机器负载(Load),主要涉及负载的定义、查看负载方式、负载飙高排查思路等 。
什么是负载负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态 。
来看下负载的定义是怎样的:
In UNIX computing, the system load is a measure of the amount of computational work that a computer system performs. The load average represents the average system load over a period of time. It conventionally Appears in the form of three numbers which represent the system load during the last one-, five-, and fifteen-minute periods.(wikipedia)简单解释一下:在UNIX系统中,系统负载是对当前CPU工作量的度量,被定义为特定时间间隔内运行队列中的平均线程数 。load average 表示机器一段时间内的平均load 。这个值越低越好 。负载过高会导致机器无法处理其他请求及操作,甚至导致死机 。
【Load 服务器性能指标——负载分析及问题排查】Linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成 。任意一项使用过多,都将导致服务器负载的急剧攀升 。
查看机器负载 。在Linux机器上,有多个命令都可以查看机器的负载信息 。其中包括uptime、top、w等 。
uptime命令uptime命令能够打印系统总共运行了多长时间和系统的平均负载 。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载 。
?~ uptime13:29up 23:41, 3 users, load averages: 1.74 1.87 1.97复制代码
这行信息的后半部分,显示"load average",它的意思是"系统的平均负荷",里面有三个数字,我们可以从中判断系统负荷是大还是小 。1.74 1.87 1.97 这三个数字的意思分别是1分钟、5分钟、15分钟内系统的平均负荷 。我们一般表示为load1、load5、load15 。
w命令w命令的主要功能其实是显示目前登入系统的用户信息 。但是与who不同的是,w命令功能更加强大,w命令还可以显示:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1分钟、5分钟和15分钟的平均负载 。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远 程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行 。
?~ w14:08up 23:41, 3 users, load averages: 1.74 1.87 1.97USERTTYFROMLOGIN@IDLE WHAThollisconsole-六1423:40 -holliss000-六1420:24 -zshholliss001-六15- w复制代码
从上面的w命令的结果可以看到,当前系统时间是14:08,系统启动到现在经历了23小时41分钟,共有3个用户登录 。系统在近1分钟、5分钟和15分钟的平均负载分别是1.74 1.87 1.97 。这和uptime得到的结果相同 。下面还打印了一些登录的用户的各项数据,不详细介绍了 。top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于windows的任务管理器 。
?~ topProcesses: 244 total, 3 running, 9 stuck, 232 sleeping, 1484 threads14:16:01Load Avg: 1.74, 1.87, 1.97CPU usage: 8.0% user, 6.79% sys, 85.19% idleSharedLibs: 116M resident, 16M data, 14M linkedit. MemRegions: 66523 total, 2152M resident, 50M private, 930M shared.PhysMem: 7819M used (1692M wired), 370M unused. VM: 682G vsize, 533M framework vsize, 6402060(0) swapins, 7234356(0) swapouts. Networks: packets: 383006/251M in, 334448/60M out.Disks: 1057821/38G read, 350852/40G written.PIDCOMMAND%CPU TIME#TH#WQ#PORT MEMPURGCMPRSPGRPPPIDSTATEBOOSTS%CPU_ME %CPU_OTHRS UIDFAULTSCOWMSGSENTMSGRECVSYSBSDSYSmacHCSW30845top3.000:00.49 1/10213632K0B0B30845 1394running*0[1]0.00000 0.0000003283+112203556+101770+8212+119901+823+30842google Chrom 0.000:47.39 170155130M0B0B11461146sleeping *0[1]0.00000 0.00000501173746269711767837821364228444830310043复制代码
上面的输出结果中,Load Avg: 1.74, 1.87, 1.97显示的就是负载信息 。机器正常负载范围对于机器的Load到底多少算正常的问题,一直都是很有争议的,不同人有着不同的理解 。对于单个CPU,有人认为如果Load超过0.7就算是超出正常范围了 。也有人认为只要不超过1都没问题 。也有人认为,单个CPU的负载在2以下都可以接受 。
推荐阅读
- 云服务器安全配置开放哪些端口
- 国内免费安全公共DNS服务器推荐
- 一款Web界面的服务器网络监控工具:PHP Server Monitor
- AMD|性能脱胎换骨!AMD Zen4更强大了:新架构有望集成GPU/NPU单元
- 阿里云服务器购买配置SSL证书全过程
- c++ Linux服务器优化
- 服务器的1U、2U是什么意思?42U机柜可以放多少台服务器?
- ssh免密登录在Linux服务器之间的设置
- Nginx服务器的六种负载均衡策略详解
- 一文教您如何实现持续集成服务器环境搭建