天天看點

檢視Linux系統的平均負載

1、linux系統的平均負載的概念

  有時候我們會覺得系統響應很慢,但是又找不到原因,這時就要檢視平均負載了,看它是否有大量的程序在排隊等待。特定時間間隔内運作隊列中的平均程序數可以反映系統的繁忙程度,是以我們通常會在自己的網站或系統變慢時第一時間查系統的負載,即cpu的平均負載。

  2、檢視平均負載

  究竟應該如何檢視平均負載呢?最簡單的指令是uptime,如下所示:

[root@localhost ~]# uptime

11:31:11 up 11 days, 19:01, 2 users, load average: 0.02, 0.01, 0.00

  目前的主流伺服器都是雙四核,有相當強悍的cpu,做一般的應用服務的話,linux系統的負載這塊倒不用我們擔心。

  還可以用w指令來檢視,順便可以檢視一下系統目前有哪些使用者,他們占用了哪些終端,如下所示:

[root@localhost ~]# w

11:33:00 up 11 days, 19:03, 2 users, load average: 0.00, 0.00, 0.00

user tty from login@  idle  jcpu  pcpu what

root pts/1113.57.224.3 09:032:11m 0.04s 0.04s -bash

root pts/2113.57.224.3 11:310.00s 0.02s 0.00s w

  另外,還有動态指令top,這個指令也可以反映系統負載情況。在下面的指令提示中,我們隻關心加粗字型部分。

[root@localhost ~]# top

top - 11:37:47 up 11 days, 19:08, 2 users, load average: 0.00, 0.00, 0.00

tasks: 122 total,  1 running, 121 sleeping,  0 stopped,  0 zombie

cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

mem:  4044136k total, 1435504k used, 2608632k free,  274740k buffers

swap: 8193140k total,0k used, 8193140k free,  941884k cached

  上面加粗字型顯示的内容是什麼意思呢?再通過uptime檢視一下。

11:39:36 up 11 days, 19:16, 1 user, load average: 0.09, 0.03, 0.01

  原來它所表示的是過去的1分鐘、5分鐘和15分鐘内程序隊列中的平均程序數量。

  那麼,如何衡量目前系統是否負載過高呢?可以從以下幾點來考慮。

  如果每個cpu(可以按cpu核心的數量計算)目前的活動程序數不大于3,則系統性能良好。

  如果每個cpu目前的活動程序數不大于4,表示可以接受。

  如果每個cpu目前的活動程序數大于5,則系統性能問題嚴重。

  還可以結合vmstat指令來判斷我們的系統是否過于繁忙,如果确定很繁忙的話,就要考慮是否更換伺服器或增加cpu的個數了。總結如下:

  如果r經常大于3或4,且id經常少于50,則表示cpu的負荷很重。

  在上面例子中,我的伺服器是poweredge 2850,cpu是雙核雙線程的,則0.09/2=0.045(即負載值/真實cpu個數),此系統的cpu負載基本可以忽略了。事實上,現在主流伺服器的cpu都很強悍,如果不是應用虛拟化等特殊場景,基本上負載都很小。

  按照前面的計算公式,我所配置nagios報警的cpu負載門檻值為cpu核心的數量(即cpu的實體個數×核數)。還是以我的伺服器poweredge 2850為例,其cpu核心的數量為2×2=4,則設定報警值為4。這樣設定是合理的,因為畢竟不是每個應用伺服器的cpu都支援多核心,畢竟整個網站中還有些性能比較弱的伺服器是用來做備份的。

繼續閱讀