如何用命令檢查Linux服務器性能


1.查看系統負載

(1)uptime

這個命令可以快速查看機器的負載情況。

在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。

命令的輸出,load average表示1分鍾、5分鍾、15分鍾的平均負載情況。

通過這三個數據,可以了解服務器負載是在趨於緊張還是趨於緩解。

如果1分鍾平均負載很高,而15分鍾平均負載很低,說明服務器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪里。

反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。

(2)W

Show who is logged on and what they are doing.

可查詢登錄當前系統的用戶信息,以及這些用戶目前正在做什么操作

其中的load average后面的三個數字則顯示了系統最近1分鍾、5分鍾、15分鍾的系統平均負載情況

 

注意:

  load average這個輸出值,這三個值的大小一般不能大於系統邏輯CPU的個數。

  如果輸出中系統有4個邏輯CPU,如果load average的三個值長期大於4時,說明CPU很繁忙,負載很高,可能會影響系統性能,

  但是偶爾大於4時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小於CPU的個數,則表示CPU還有空閑

2.dmesg | tail

該命令會輸出系統日志的最后10行。

這些日志可以幫助排查性能問題.

3.vmstat 

vmstat Virtual Meomory Statistics(虛擬內存統計),用來獲得有關進程、虛存、頁面交換空間及 CPU活動的信息。這些信息反映了系統的負載情況。

后面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義

(1)監控進程procs: 

  • r:等待在CPU資源的進程數

 

    這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那么機器的CPU資源已經飽和(出現了CPU瓶頸)。

  • b:在等待io的進程數 。 

(2)監控內存memoy:

 

  • swpd:現時可用的交換內存(單位KB)
  • free:系統可用內存數(以千字節為單位)

  • buff: 緩沖去中的內存數(單位:KB)。

  • cache:被用來做為高速緩存的內存數(單位:KB)。 

(3)監控swap交換頁面

  • si: 從磁盤交換到內存的交換頁數量,單位:KB/秒。 
  • so: 從內存交換到磁盤的交換頁數量,單位:KB/秒。 

  如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。

(4)監控 io塊設備

  • bi: 發送到塊設備的塊數,單位:塊/秒。 
  • bo: 從塊設備接收到的塊數,單位:塊/秒。

(5)監控system系統

  • in: 每秒的中斷數,包括時鍾中斷。 
  • cs: 每秒的環境(上下文)轉換次數。

(6)監控cpu中央處理器:

  • us:用戶進程使用的時間 。以百分比表示。 
  • sy:系統進程使用的時間。 以百分比表示。 
  • id:中央處理器的空閑時間 。以百分比表示。

 

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

 這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。

注:

  如果IO等待時間很長,那么系統的瓶頸可能在磁盤IO。

  如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。  

  如果有大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合r隊列,一起分析。

4.mpstat -P ALL 1

該命令可以顯示每個CPU的占用情況,如果有一個CPU占用率特別高,那么有可能是一個單線程應用程序引起的。

MultiProcessor Statistics的縮寫,是實時系統監控工具

其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。

格式:mpstat [-P {|ALL}] [internal [count]]

-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值

internal 相鄰的兩次采樣的間隔時間

count 采樣的次數,count只能和delay一起使用

 

  all : 指所有CPU

 

  %usr : 顯示在用戶級別(例如應用程序)執行時CPU利用率的百分比

 

  %nice :顯示在擁有nice優先級的用戶級別執行時CPU利用率的百分比

 

  %sys : 現實在系統級別(例如內核)執行時CPU利用率的百分比

 

  %iowait : 顯示在系統有未完成的磁盤I/O請求期間CPU空閑時間的百分比

 

  %irq : 顯示CPU服務硬件中斷所花費時間的百分比

 

  %soft : 顯示CPU服務軟件中斷所花費時間的百分比

 

  %steal : 顯示虛擬機管理器在服務另一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比

 

  %guest : 顯示運行虛擬處理器時CPU花費時間的百分比

 

  %idle : 顯示CPU空閑和系統沒有未完成的磁盤I/O請求情況下的時間百分比

系統有兩個CPU。如果使用參數 -P 然后緊跟CPU編號得到指定CPU的利用率。

( Ubuntu安裝: apt-get install sysstat)

5.pidstat 1

pidstat命令輸出進程的CPU占用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態

6.iostat -xz 1

iostat命令主要用於查看機器磁盤IO情況

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

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

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

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

 

注:如果顯示的是邏輯設備的數據,那么設備利用率不代表后端實際的硬件設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能

 7.free -m

free命令可以查看系統內存的使用情況,-m參數表示按照兆字節展示。

最后兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。

注:

  第二行-/+ buffers/cache,看上去緩存占用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。

  如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。

8.sar -n DEV 1

sar命令在這里可以查看網絡設備的吞吐率。

在排查性能問題時,可以通過網絡設備的吞吐量,判斷網絡設備是否已經飽和。

9.sar -n TCP,ETCP 1

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

  • active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;

  • passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;

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

 

TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網絡環境惡劣,或者服務器壓力過大導致丟包。

10.top

top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。

因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存占用最多的進程、CPU占用率最高的進程等。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM