如何查看linux服务器负载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看linux服务器负载相关的知识,希望对你有一定的参考价值。

参考技术A

查看服务器负载有多种命令,w、vmstat或者uptime都可以直接展示负载。
[hs@master opt]$ uptime
11:00:06 up 106 days, 19:36,  3 users,  load average: 0.00, 0.03, 0.05
信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。 
1可以被认为是最优的负载值。负载是会随着系统不同改变得。单CPU系统1-3和SMP系统6-10都是可能接受的。 

[hs@master opt]$ w
11:00:38 up 106 days, 19:37,  3 users,  load average: 0.00, 0.03, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
spark59  pts/0     09:47   14:46   1:08   0.01s sshd: spark59 [priv]
spark59  pts/1     09:47   11:10  55.77s  0.00s sshd: spark59 [priv]
spark59  pts/2     09:58    6.00s  0.11s  0.00s sshd: spark59 [priv]

load average分别对应于过去1分钟,5分钟,15分钟的负载平均值。

[hs@master opt]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 2276632 132056 1544508    0    0    20    75    1    0  2  0 97  0  0
procs
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
cpu 表示cpu的使用状态
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 
id 列显示了cpu处在空闲状态的时间百分比 
system 显示采集间隔内发生的中断数
in 列表示在某一时间间隔中观测到的每秒设备中断数。
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 
free 当前的空闲页面列表中内存数量(k表示) 
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 
swap
si 由内存进入内存交换区数量。
so由内存交换区进入内存数量。 
IO
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。
bo 块设备写入数据的总量(写磁盘)(每秒kb)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。

以上三个个命令只是单纯的反映出负载,linux提供了更为强大,也更为实用的top命令来查看服务器负载。
top命令能够清晰的展现出系统的状态,而且它是实时的监控,按q退出。
[hs@master opt]$ top
top - 11:01:13 up 106 days, 19:37,  3 users,  load average: 0.05, 0.04, 0.05
Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.1 us,  0.3 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   8011936 total,  5733520 used,  2278416 free,   131392 buffers
KiB Swap:        0 total,        0 used,        0 free.  1543588 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                              
32001 hs        20   0 1265020 256252  38172 S   2.3  3.2   0:56.77 java
2696 hs        20   0 3726664 447420     60 S   0.7  5.6 819:57.88 java                                                  
29566 root      20   0   64780   4668   2628 S   0.7  0.1  43:18.42 AliYunDun
1624 hs        20   0 1789456 292492   4928 S   0.3  3.7 298:23.89 java
2008 hs        20   0 1996320 438004   4604 S   0.3  5.5 849:44.95 java
2465 hs        20   0 1258944 170752    264 S   0.3  2.1  89:18.25 java
3284 hs        20   0 2867828 210788   3756 S   0.3  2.6 259:29.98 java                                                  
29580 root      20   0  836552   6320   2584 S   0.3  0.1  13:10.27 AliHids
1 root      20   0   63648  25184   1424 S   0.0  0.3   4:44.45 systemd
2 root      20   0       0      0      0 S   0.0  0.0   0:01.49 kthreadd
3 root      20   0       0      0      0 S   0.0  0.0   8:01.90 ksoftirqd/0
5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
7 root      rt   0       0      0      0 S   0.0  0.0   0:30.46 migration/0   

Tasks行展示了目前的进程总数及所处状态,要注意zombie,表示僵尸进程,不为0则表示有进程出现问题。

Cpu(s)行展示了当前CPU的状态,us表示用户进程占用CPU比例,sy表示内核进程占用CPU比例,id表示空闲CPU百分比,wa表示IO等待所占用的CPU时间的百分比。wa占用超过30%则表示IO压力很大。
Mem行展示了当前内存的状态,total是总的内存大小,userd是已使用的,free是剩余的,buffers是目录缓存。
Swap行同Mem行,cached表示缓存,用户已打开的文件。如果Swap的used很高,则表示系统内存不足。

在top命令下,按1,则可以展示出服务器有多少CPU,及每个CPU的使用情况
一般而言,服务器的合理负载是CPU核数*2。也就是说对于8核的CPU,负载在16以内表明机器运行很稳定流畅。如果负载超过16了,就说明服务器的运行有一定的压力了。

在top命令下,按shift + "c",则将进程按照CPU使用率从大到小排序,按shift+"p",则将进程按照内存使用率从大到小排序,很容易能够定位出哪些服务占用了较高的CPU和内存。

仅仅有top命令是不够的,因为它仅能展示CPU和内存的使用情况,对于负载升高的另一重要原因——IO没有清晰明确的展示。linux提供了iostat命令,可以了解io的开销。

输入iostat -x 1 10命令,表示开始监控输入输出状态,-x表示显示所有参数信息,1表示每隔1秒监控一次,10表示共监控10次。
其中rsec/s表示读入,wsec/s表示每秒写入,这两个参数某一个特别高的时候就表示磁盘IO有很大压力,util表示IO使用率,如果接近100%,说明IO满负荷运转。 
[hs@master opt]$ iostat -x 1 10
Linux 3.10.0-123.9.3.el7.x86_64 (master)  07/29/2016  _x86_64_ (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
2.47    0.00    0.38    0.20    0.00   96.95

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
vda               0.00     0.86    0.77    1.45    50.88   139.71   172.11     0.18   81.22    3.87  122.28   1.52   0.34
vdb               0.00    37.36    0.37    3.16    28.06   159.69   106.50     0.02    4.69    5.87    4.55   1.86   0.65

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.75    0.00    0.25    0.25    0.00   98.75

总结:
(1)使用top命令查看负载,在top下按“1”查看CPU核心数量,shift+"c"按cpu使用率大小排序,shif+"p"按内存使用率高低排序;
(2)使用iostat -x 命令来监控io的输入输出是否过大

linux 负载查看

负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态。如果机器负载过高,那么对机器的操作将难以进行。

linux的负载高,主要是由于CPU使用、内存使用、IO消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。

查看服务器负载有多种命令,w或者uptime都可以直接展示负载,

$ uptime
12:20:30 up 44 days, 21:46, 2 users, load average: 8.99, 7.55, 5.40

$ w
12:22:02 up 44 days, 21:48, 2 users, load average: 3.96, 6.28, 5.16

load average分别对应于过去1分钟,5分钟,15分钟的负载平均值。

这两个命令只是单纯的反映出负载,linux提供了更为强大,也更为实用的top命令来查看服务器负载。

 

$ top

 

top命令能够清晰的展现出系统的状态,而且它是实时的监控,按q退出。

 

Tasks行展示了目前的进程总数及所处状态,要注意zombie,表示僵尸进程,不为0则表示有进程出现问题。

Cpu(s)行展示了当前CPU的状态,us表示用户进程占用CPU比例,sy表示内核进程占用CPU比例,id表示空闲CPU百分比,wa表示IO等待所占用的CPU时间的百分比。wa占用超过30%则表示IO压力很大。

Mem行展示了当前内存的状态,total是总的内存大小,userd是已使用的,free是剩余的,buffers是目录缓存。

Swap行同Mem行,cached表示缓存,用户已打开的文件。如果Swap的used很高,则表示系统内存不足。

 

在top命令下,按1,则可以展示出服务器有多少CPU,及每个CPU的使用情况

 

一般而言,服务器的合理负载是CPU核数*2。也就是说对于8核的CPU,负载在16以内表明机器运行很稳定流畅。如果负载超过16了,就说明服务器的运行有一定的压力了。

在top命令下,按shift + "c",则将进程按照CPU使用率从大到小排序,按shift+"p",则将进程按照内存使用率从大到小排序,很容易能够定位出哪些服务占用了较高的CPU和内存。

 

仅仅有top命令是不够的,因为它仅能展示CPU和内存的使用情况,对于负载升高的另一重要原因——IO没有清晰明确的展示。linux提供了iostat命令,可以了解io的开销。

输入iostat -x 1 10命令,表示开始监控输入输出状态,-x表示显示所有参数信息,1表示每隔1秒监控一次,10表示共监控10次。

 

其中rsec/s表示读入,wsec/s表示每秒写入,这两个参数某一个特别高的时候就表示磁盘IO有很大压力,util表示IO使用率,如果接近100%,说明IO满负荷运转。

 

总结:

(1)使用top命令查看负载,在top下按“1”查看CPU核心数量,shift+"c"按cpu使用率大小排序,shif+"p"按内存使用率高低排序;

(2)使用iostat -x 命令来监控io的输入输出是否过大



以上是关于如何查看linux服务器负载的主要内容,如果未能解决你的问题,请参考以下文章

linux学习:linux服务器常用操作和命令

linux下如何查看多核负载情况

Linux查看负载

linux 负载查看

Linux查看机器负载

Linux查看机器负载