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代表無虛擬內存。有的話,需要注意虛擬內存的使用,使用過多代表物理內存已經不夠。