【top】
命令可以動態查看當前系統的資源情況,以及占用資源的命令列表
用法:
- ctrl + c / q : 停止此命令運行
- c : 展示完整的命令
- 【top -bn1】:可以不動態的展示當前系統的資源情況
- 【uptime】:第一行的load average可以通過此命令看到
$ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02 #第一個數值: 代表着1分鍾的平均負載 #第二個數值:代表着5分鍾的平均負載 #第三個數值:代表着15分鍾的平均負載 #如果1分鍾的平均負載很高,15分鍾的很低 ==>系統正在執行高負載命令,大量消耗CPU
【dmesg】 ==> /var/log/dmesg
命令可以快速查看系統啟動過程中的內核日志信息,包括:系統設備信息、啟動和操作過程中系統記錄的任何錯誤和問題
用法:
- 【dmesg | more】: 打印出來的內容會很多,可以利用more來分頁查看
- 【dmesg | tail 】: 打印最后十行的日志
【vmstat 1 5】
命令輸出系統核心指標信息,1 5 表示1秒輸出5次信息
用法:
- 【r】: 等待CPU資源的進程數,不包括等待IO的進程{數值如果大於CPU核數,就說明機器的CPU資源已經飽和}
- 【free】: 系統可用內存(以K為單位)
- 【si,so】:交換區swap寫入和讀取的數量,如果數值不等於0,那么機器物理內存已經不足
- 【us,sy,id,wa,st】:分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
這里的user + sys 結果特別大 ==》 CPU繁忙於執行命令
wail 很大 ==》 則瓶頸可能在磁盤IO
【mpstat -P ALL 1】
命令可顯示CPU的個數,以及每一個CPU被占用的狀況,
如果有一個CPU占用率特別高,那么有可能是一個單線程應用程序引起的。
【pidstat 1】
輸出進程的CPU占用率{會持續輸出,並不會覆蓋之前的數據}
從這個命令中可以通過計算某個進程占用CPU的時間來推斷占用了多少個CPU資源
【iostat -zx 1】
查看機器磁盤IO情況
用法:
- 【r/s, w/s, rkB/s, wkB/s】: 表示每秒讀寫次數和每秒讀寫數據量(KB)==》 這個值表示讀寫量,讀寫量過大,會引起性能問題
- 【await】: IO操作的平均等待時間,{單位:ms},此處代表應用程序和磁盤交互時,需要消耗的時間(包括IO等待和實際操作的耗時),這個數值過大,可能是硬件設備遇到了瓶頸或者出現故障
- 【avgqu-sz】: 向設備發出的請求平均量,如果此數值大於1,可能是硬件設備已經飽和(部分前端設備支持並行寫入)
- 【%util】:設備利用率,這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬件設備已經飽和。
如果顯示的是邏輯設備的數據,那么設備利用率不代表后端實際的硬件設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能。
【sar -n DEV 1】
查看網絡設備的吞吐率
這里需要了解網絡設備的吞吐量上限,從這里可以判斷是否網絡設備已經飽和,無法承擔更大的訪問。
【sar -n TCP,ETCP 1】
查看TCP連接狀態
參數:
- active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
- passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
- retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。
TCP重傳可能是因為網絡環境惡劣,或者服務器壓力過大導致丟包。
