linux服務器監控

1.load

load爲特定時間間隔內運行隊列中平均線程數。load average後面三個值代表1、5、15分鐘系統的load值,如果每個cpu的線程數大於5,表示系統負載較高,需採取措施降低負載,加快系統響應速度。

$ uptime  
10:36:46 up 207 days, 17:55,  1 user,  load average: 0.45, 0.75, 0.85 

2.CPU利用率

CPU的時間消耗主要在如下幾方面:用戶進程、內核進程、中斷處理、I/O等待、Nice時間、丟失時間、空閒等部分。CPU的利用率爲這些時間所佔總時間的百分比。通過CPU利用率,反映CPU的使用和消耗情況。

$ top | grep Cpu  
%Cpu(s):  4.0 us,  0.3 sy,  0.0 ni, 95.1 id,  0.5 wa,  0.0 hi,  0.0 si,  0.1 st  
%Cpu(s): 16.4 us,  1.3 sy,  0.0 ni, 80.6 id,  1.3 wa,  0.0 hi,  0.2 si,  0.2 st  
%Cpu(s): 20.7 us,  1.5 sy,  0.0 ni, 75.0 id,  2.5 wa,  0.0 hi,  0.1 si,  0.2 st  
%Cpu(s): 21.7 us,  2.1 sy,  0.0 ni, 75.6 id,  0.4 wa,  0.0 hi,  0.1 si,  0.2 st  
%Cpu(s): 16.9 us,  1.3 sy,  0.0 ni, 80.9 id,  0.5 wa,  0.0 hi,  0.3 si,  0.2 st

us:用戶時間(user time),表示cpu執行用戶進程所佔用的時間比,通常情況希望us的佔比越高越好。

sy:系統時間(system time),表示cpu內核態所花費的時間,sy的佔比較高意味着系統在某些方面設計的不合理。

ni:Nice時間(nice time),表示系統在調整系統優先級的時候所花費的時間。

id:空閒時間(idle time),表示系統處於空閒期,等待系統進程運行這個過程所佔用的時間。id的佔比越低越好。

wa:等待時間(waiting time),表示cpu在等待I/O操作所花費的時間。系統不應該花費大量的時間進行等待,否則可能某個地方設計不合理。

hi:硬件中斷處理時間(hard irq time),表示系統處理硬件中斷所佔用的時間。

si:軟件中斷處理時間(soft irq time),表示系統處理軟件中斷所佔用的時間。

st:丟失時間(steal time),表示被強制等待虛擬cpu的時間。如果佔比較高,表示當前虛擬機與該宿主上其他虛擬機間的cpu爭用較爲頻繁。


多個或多核cpu的服務器,查看每個cpu的使用情況,top命令後按1,可查看每個cpu利用率:

$ top   
top - 11:04:17 up 207 days, 18:22,  2 users,  load average: 1.75, 1.61, 1.25  
Tasks: 153 total,   1 running, 152 sleeping,   0 stopped,   0 zombie  
%Cpu0  :  7.1 us,  0.7 sy,  0.0 ni, 89.2 id,  2.4 wa,  0.0 hi,  0.3 si,  0.3 st  
%Cpu1  : 15.2 us,  0.3 sy,  0.0 ni, 84.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  
%Cpu2  :  5.7 us,  0.3 sy,  0.0 ni, 93.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st  
%Cpu3  :  3.4 us,  0.7 sy,  0.0 ni, 95.3 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st  
KiB Mem:  16006448 total, 15822004 used,   184444 free,   286124 buffers  
KiB Swap:        0 total,        0 used,        0 free.  4554820 cached Mem  

默認情況下top是按進程來顯示cpu消耗情況,按shift+h,可以按照線程來查看cpu消耗情況,對於java應用非常有效。

-p 可以指定查看的進程: 

$ top -p 21146  
top - 11:10:55 up 207 days, 18:29,  2 users,  load average: 2.65, 2.04, 1.57  
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie  
%Cpu(s): 38.4 us, 44.3 sy,  0.0 ni, 15.9 id,  0.4 wa,  0.1 hi,  0.4 si,  0.4 st  
KiB Mem:  16006448 total, 15786216 used,   220232 free,   287160 buffers  
KiB Swap:        0 total,        0 used,        0 free.  4508536 cached Mem  
  
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                           
21146 root      20   0 6774296 2.293g   9140 S   7.0 15.0  83:02.28 java 

3.磁盤剩餘空間

df命令查看磁盤的剩餘空間:

$ df -h  
Filesystem                                             Size  Used Avail Use% Mounted on  
/dev/xvda1                                              20G  9.0G  9.6G  49% /  
devtmpfs                                               7.8G     0  7.8G   0% /dev  
tmpfs                                                  7.7G     0  7.7G   0% /dev/shm  

-h 表示按單位格式化輸出。


du用來查看具體目錄所佔用的空間:

$ du -d 1 -h /data/  
6.1G    /data/riskimage  
41M     /data/risk-star  
112M    /data/source  
128M    /data/tmp  
6.3G    /data/logs  
-d 表示遞歸深度,1表示下一級目錄 

-h 表示按文件大小單位格式化輸出 


4.網絡traffic

關注網絡的流量同樣重要,網絡流量迅速上升後可能使某些應用出現網絡瓶頸,所以需要了解各個節點的閾值與水平。

$ sar -n DEV 1 1  
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service-inc.cn)         07/14/2016      _x86_64_        (4 CPU)  
11:21:02 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s  
11:21:03 AM      eth0    495.00    450.00     80.89     72.94      0.00      0.00      0.00  
11:21:03 AM      eth1    208.00    210.00     13.39    410.32      0.00      0.00      0.00  
11:21:03 AM        lo    258.00    258.00     85.41     85.41      0.00      0.00      0.00  
  
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s  
Average:         eth0    495.00    450.00     80.89     72.94      0.00      0.00      0.00  
Average:         eth1    208.00    210.00     13.39    410.32      0.00      0.00      0.00  
Average:           lo    258.00    258.00     85.41     85.41      0.00      0.00      0.00  
-n 表示彙報網絡的狀況,DEV表示查看各個網卡的網絡流量,第一個1表示每一秒抽樣一次,第二個1表示總共取一次。

lo:表示本地迴環網絡 

eth0、eth1:表示網卡 

rxpck/s:每秒接收的數據包數量 

txpck/s:每秒發出的數據包數量 

rxkB/s:每秒接收到的字節數(KB) 

txkB/s:每秒發送的字節數(KB) 

rxcmp/s:每秒接收到的壓縮包數量 

txcmp/s:每秒發送的壓縮包數量 

rxmcst/s:每秒收到的廣播包數量 

Average:多次取樣的平均值 


5.磁盤I/O

       磁盤I/O的繁忙度也是一個重要的系統指標。對於I/O密集型的應用來說,比如數據庫應用和分佈式文件系統等,I/O的繁忙程度也一定程度的反映了系統的負載情況,容易成爲應用性能的瓶頸。

$ iostat -d -k  
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service.cn)         07/14/2016      _x86_64_        (4 CPU)  
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn  
xvda              1.28         0.86        15.90   15436649  285375444  
xvdb             13.08        43.97       143.90  789478293 2583453348  
-d 表示查看磁盤使用情況 

-k 表示以KB爲單位顯示 


device:表示設備名稱 

tps:每秒處理的I/O請求數 

kB_read/s:每秒從設備讀取的數據量 

kB_wrtn/s:每秒向設備寫入的數據量 

kB_read:讀取的數據總量 

kB_wrtn:寫入的數據總量 


程序運行時的數據加載、線程併發、I/O緩衝等,都依賴於內存,可用內存的大小決定了程序是否能正常運行以及運行的性能。

$ free -m  
             total       used       free     shared    buffers     cached  
Mem:         15631      12998       2632        274        290       1858  
-/+ buffers/cache:      10849       4781  
Swap:            0          0          0  
-m 表示以MB爲單位 

total:內存總共大小 

used:已使用內存大小 

free:可使用內存大小 

shared:多個進程共享的內存大小 

buffers:緩衝區的大小 

cached:緩存的大小 

swap:虛擬內存的消耗,total爲0代表無虛擬內存。有的話,需要注意虛擬內存的使用,使用過多代表物理內存已經不夠。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章