linux下運維必備的性能分析工具總結
性能分析工具總結:
1、 vmstat :對操作系統的內存信息、進程、CPU進行監視分析
#vmstat 2 3 每二秒更新輸出一次,統計3次後停止。
[root@MYDB1 ~]# vmstat 2 3
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 170688 171224 464808 0 0 0 1 14 7 0 0 100 0 0
0 0 0 170680 171224 464828 0 0 0 0 12 36 0 0 100 0 0
0 0 0 170680 171224 464828 0 0 0 0 13 37 0 0 100 0 0
Procs: r CPU時間片的進程數;b等待資源的進程數。
Memory:swpd 內存交換區的大小,只要si,so長期為0,就不影響。Free空閒的物理內存;buff 內存緩沖區;cache緩存,只要bi小就正常。
swap: si 磁盤調入內存;so內存調入磁盤,so與si長期多的話,說明需要增加內存了。
IO:磁盤讀寫狀態;bi從設備讀入的總量;bo寫入設備的總量,bi+bo參考值為1000,超過就是IO有問題了。
System:采集間隔內發生的中斷數。In每秒中斷數;cs每秒產生的上下文切換次數,這二個值班越大,內核消耗CPU時間越多。
Cpu: us 進程消耗CPU的時間比,值越高,消耗的CPU時間越多,長期大於50%,需要優化程或算法;sy內核消耗CPU的時間比。Us+sy大於80%時,說明CPU資源不足。Id CPU空閒時間比;wa是IO等待占用CPU時間比,wa越高,說明IO越嚴重。Wa參考值為20%,長期大於20%說明IO問題嚴重。
2、 sar 可以獲取系統的CPU、運行隊列、磁盤IO、分頁(交換區)、內存、CPU中斷、網絡等。
#sar –u 3 2 每三秒統計一次,統計2次
[root@MYDB1 ~]# sar -n DEV 3 2
Linux 2.6.32-279.19.1.el6.x86_64 (MYDB1) 03/09/13 _x86_64_ (1 CPU)
18:00:50 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
18:00:53 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18:00:53 eth0 4.00 0.00 0.29 0.00 0.00 0.00 0.00
18:00:53 eth1 0.33 0.00 0.02 0.00 0.00 0.00 0.00
18:00:53 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
18:00:56 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
18:00:56 eth0 2.66 0.33 0.21 0.15 0.00 0.00 0.00
18:00:56 eth1 0.66 0.00 0.04 0.00 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: eth0 3.33 0.17 0.25 0.08 0.00 0.00 0.00
Average: eth1 0.50 0.00 0.03 0.00 0.00 0.00 0.00
參數:-A 所有設備;-u所有CPU;-P指定的CPU;-d硬盤;-r內存采樣;-b內存緩沖區采樣;-v進程、文件、節點和鎖表狀態;-n網絡;-q隊列;-R進程;-y終端設備;-W系統交換 –o filename 將命令結果以二進制格式放在文件中;
3、 iostat(需要安裝Sysstat),主要針對磁盤IO磁盤監視。
#Iostat –d 2 3
[root@MYDB1 ~]# iostat -d 2 3
Linux 2.6.32-279.19.1.el6.x86_64 (MYDB1) 03/09/13 _x86_64_ (1 CPU)
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.16 0.19 2.28 531210 6494604
dm-0 0.29 0.18 2.28 522090 6494552
dm-1 0.00 0.00 0.00 2376 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
dm-1 0.00 0.00 0.00 0 0
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0.00 0.00 0.00 0 0
dm-0 0.00 0.00 0.00 0 0
dm-1 0.00 0.00 0.00 0 0
Blk_read/s:每秒讀取的數據塊數
Blk_wrtn/s每秒寫入的數據塊數
Blk_read 讀取的所有塊數
Blk_wrtn 寫入的所有塊數
參數:-c 顯示CPU的使用情況;-d磁盤;-k以KB這單位;-t打印開始執行時間;-x device 按磁盤名稱統計。
4、 free 內存監控
#free –m (以M為單位)
[root@MYDB1 ~]# free -m
total used free shared buffers cached
Mem: 995 829 166 0 167 453
-/+ buffers/cache: 208 787
Swap: 2015 0 2015
經驗值:應用可用的內存/系統物理內存>70%,說明性能優良,<20%是,資源緊缺,需要增加內存。在這二個數之間,算正常。
5、 uptime
#uptime
[root@MYDB1 ~]# uptime
18:17:59 up 33 days, 3:30, 3 users, load average: 0.00, 0.00, 0.00
系統時間、開機運行時間、登錄用戶數、1分鐘內、5分鐘內、15分鐘內平均負載。
Load average一般不能大於CPU的個數,長期大於的話,說明CPU很忙,需要優化程序或者增加CPU。
6、 netstat:網絡連接、運行端口、路由表等
#netstat –i
[root@MYDB1 ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 5295771 0 0 0 114725 0 0 0 BMRU
參數:-a 所有的連接與端口;-n有效的連接與端口;-r 路由表;-s按協議的統計;-v與n類似;-t TCP協議;-u UDP協議;- I 自動配置的接口狀態;-l LISTEN狀態;-p對應的PID進程,-c按秒。
Iface:接口名稱
MTU:最大傳輸單元,單位字節
RX-OK/TX-OK:正確無誤的數據包
RX-ERR/TX-ERR:產生的錯誤
RX-DRP/TX-DRP:丟棄的包
RX-OVR/TX-OVR:誤差遺失的包
錯誤、丟棄、遺失的包越大,網絡問題越大。
7、 top
#top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 19228 1520 1232 S 0.0 0.1 0:07.49 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
參數:-d 時間間隔;-I不顯示死的或閒的進程;-c 整個命令路徑;-s安全模式運行;-b分屏輸出,可與-n結合輸出到文檔;-n輸出的次數,完成後退出。
PR:優先級
NI:nice值,負值班優先級高,正的相反
VIRT:使用的虛擬內存總量,單位KB
RES:占用的內存,單位KB
SHR:共享內存大小,單位KB
TIME+:使用的CPU時間總計,單位1/100秒
COMMAND:命令名或者路徑