負載(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次。
沒有iostat命令的話 yum/apt-get install sysstat -y 即可
其中rsec/s表示讀入,wsec/s表示每秒寫入,這兩個參數某一個特別高的時候就表示磁盤IO有很大壓力,util表示IO使用率,如果接近100%,說明IO滿負荷運轉。
總結:
(1)使用top命令查看負載,在top下按“1”查看CPU核心數量,shift+"c"按cpu使用率大小排序,shif+"p"按內存使用率高低排序;
(2)使用iostat -x 命令來監控io的輸入輸出是否過大
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
使用SSHClient客戶端連接到遠程Linux系統。使用top命令查看系統的當前運行的情況。如圖對top命令執行的結果做了簡單的圖解,下面針對每一項做詳細的解釋。
-
top命令的第一行“top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00, 0.00”顯示的內容依次為“系統當前時間 、系統到目前為止已運行的時間、當前登錄系統的用戶數量、系統負載(任務隊列的平均長度)三個值分別為1分鍾、5分鍾、15分鍾前到現在的平均值【這三個一般會小於1,如果持續高於5,請仔細查看那個程序影響系統的運行】”
-
top命令的第二行“Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie”顯示的內容依次“所有啟動的進程數”、“正在運行的進程數”、“掛起的進程數”、“停止的進程數”、“僵屍進程數”。
-
top命令的第三行“Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st”顯示的內容依次為“用戶空間占用CPU百分比”、“內核空間占用CPU百分比”、“用戶空間內改變過優先級的進程占用CPU百分比”、“空閑CPU百分比”、“等待輸入輸出CPU時間百分比”、“CPU服務於硬件中斷所耗費的時間總額”、“CPU服務軟中斷所耗費的時間總額”、“Steal Time”
-
top命令第四行“Mem: 508820k total, 480172k used, 28648k free, 41944k buffers”顯示內容依次為“物理內存總量”、“已使用的物理內存”、“空閑物理內存”、“內核緩存內存量”。
-
top命令第5行“Swap: 392184k total, 0k used, 392184k free, 259152k cached”顯示內容依次為“交換區總量”、“已使用交互區總量”、“空閑交換區總量”、“緩沖的交換區總量”。
-
top命令第5行“PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ”顯示內容依次為“進程ID”、“進程所有者”、“優先級”、“nice值,負值表示高優先級,正值表示低優先級”、“進程使用的虛擬內存總量”、“進程使用的、未被換出的物理內存大小”、“共享內存大小”、“進程狀態”、“上次更新到現在的CPU時間占用百分比”、“進程使用的物理內存百分比”、“進程使用CPU總時間”、“命令名、命令行”。
END