如何用九條命令在一分鐘內檢查Linux服務器性能?

1、uptime命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

這個命令能夠快速查看機器的負載狀況。在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態爲D)的數量。這些數據可讓咱們對系統資源使用有一個宏觀的瞭解。前端

命令的輸出分別表示1分鐘、5分鐘、15分鐘的平均負載狀況。經過這三個數據,能夠了解服務器負載是在趨於緊張仍是趨於緩解。若是1分鐘平均負載很高,而15分鐘平均負載很低,說明服務器正在命令高負載狀況,須要進一步排查CPU資源都消耗在了哪裏。反之,若是15分鐘平均負載很高,1分鐘平均負載較低,則有多是CPU資源緊張時刻已通過去。ios

上面例子中的輸出,能夠看見最近1分鐘的平均負載很是高,且遠高於最近15分鐘負載,所以咱們須要繼續排查當前系統中有什麼進程消耗了大量的資源。能夠經過下文將會介紹的vmstat、mpstat等命令進一步排查。後端

2、dmesg命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

該命令會輸出系統日誌的最後10行。示例中的輸出,能夠看見一次內核的oom kill和一次TCP丟包。這些日誌能夠幫助排查性能問題。千萬不要忘了這一步。
緩存

3、vmstat命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

vmstat(8) 命令,每行會輸出一些系統核心指標,這些指標可讓咱們更詳細的瞭解系統狀態。後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義,這幾介紹一些和性能調優相關的列:
服務器

  • r:等待在CPU資源的進程數。這個數據比平均負載更加可以體現CPU負載狀況,數據中不包含等待IO的進程。若是這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和。網絡

  • free:系統可用內存數(以千字節爲單位),若是剩餘內存不足,也會致使系統性能問題。下文介紹到的free命令,能夠更詳細的瞭解系統內存的使用狀況。ide

  • si,so:交換區寫入和讀取的數量。若是這個數據不爲0,說明系統已經在使用交換區(swap),機器物理內存已經不足。性能

  • us, sy, id, wa, st:這些都表明了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閒時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,通常被其餘虛擬機消耗)。spa

上述這些CPU時間,可讓咱們很快了解CPU是否出於繁忙狀態。通常狀況下,若是用戶時間和系統時間相加很是大,CPU出於忙於執行指令。若是IO等待時間很長,那麼系統的瓶頸可能在磁盤IO。線程

示例命令的輸出能夠看見,大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不必定是性能問題,須要結合r隊列,一塊兒分析。

4、mpstat命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

該命令能夠顯示每一個CPU的佔用狀況,若是有一個CPU佔用率特別高,那麼有多是一個單線程應用程序引發的。

5、pidstat命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,而且不會覆蓋以前的數據,能夠方便觀察系統動態。如上的輸出,能夠看見兩個JAVA進程佔用了將近1600%的CPU時間,既消耗了大約16個CPU核心的運算資源。

6、iostat命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

  • r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千字節)。讀寫量過大,可能會引發性能問題。

  • await:IO操做的平均等待時間,單位是毫秒。這是應用程序在和磁盤交互時,須要消耗的時間,包括IO等待和實際操做的耗時。若是這個數值過大,多是硬件設備遇到了瓶頸或者出現故障。

  • avgqu-sz:向設備發出的請求平均數量。若是這個數值大於1,多是硬件設備已經飽和(部分前端硬件設備支持並行寫入)。

  • %util:設備利用率。這個數值表示設備的繁忙程度,經驗值是若是超過60,可能會影響IO性能(能夠參照IO操做平均等待時間)。若是到達100%,說明硬件設備已經飽和。

若是顯示的是邏輯設備的數據,那麼設備利用率不表明後端實際的硬件設備已經飽和。值得注意的是,即便IO性能不理想,也不必定意味這應用程序性能會很差,能夠利用諸如預讀取、寫緩存等策略提高應用性能。

7、free命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

free命令能夠查看系統內存的使用狀況,-m參數表示按照兆字節展現。最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。須要注意的是,第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。

這是Linux系統的內存使用策略,儘量的利用內存,若是應用程序須要內存,這部份內存會當即被回收並分配給應用程序。所以,這部份內存通常也被當成是可用內存。

若是可用內存很是少,系統可能會動用交換區(若是配置了的話),這樣會增長IO開銷(能夠在iostat命令中提現),下降系統性能。

8、sar命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

sar命令在這裏能夠查看網絡設備的吞吐率。在排查性能問題時,能夠經過網絡設備的吞吐量,判斷網絡設備是否已經飽和。如示例輸出中,eth0網卡設備,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,沒有達到1Gbit/sec的硬件上限。

d3hfZm10PXBuZw==

sar命令在這裏用於查看TCP鏈接狀態,其中包括:

  • active/s:每秒本地發起的TCP鏈接數,既經過connect調用建立的TCP鏈接;

  • passive/s:每秒遠程發起的TCP鏈接數,即經過accept調用建立的TCP鏈接;

  • retrans/s:每秒TCP重傳數量;

TCP鏈接數能夠用來判斷性能問題是否因爲創建了過多的鏈接,進一步能夠判斷是主動發起的鏈接,仍是被動接受的鏈接。TCP重傳多是由於網絡環境惡劣,或者服務器壓

9、top命令

aHR0cHM6Ly9tbWJpei5xbG9nby5jbi9tbWJpel9w

top命令包含了前面好幾個命令的檢查的內容。好比系統負載狀況(uptime)、系統內存使用狀況(free)、系統CPU使用狀況(vmstat)等。所以經過這個命令,能夠相對全面的查看系統負載的來源。同時,top命令支持排序,能夠按照不一樣的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。

可是,top命令相對於前面一些命令,輸出是一個瞬間值,若是不持續盯着,可能會錯過一些線索。這時可能須要暫停top命令刷新,來記錄和比對數據。

本文轉載自:如何用九條命令在一分鐘內檢查Linux服務器性能?

相關文章
相關標籤/搜索