linux效能監控

2021-09-07 23:43:14 字數 1714 閱讀 8466

某個線上系統平時非常穩定,當大量更新資料時,系統的服務就會嚴重超時。問題存在了一段時間,基本猜測系統超時和大量寫入資料有關,但卻無法給出確切的解釋。最近花了幾天時間,深入研究這個問題。首先是需要給出問題原因的確切解釋。因此,需要監控服務不正常期間linux系統的各種效能。

top -- 檢視程序活動狀態以及一些系統狀況,常用於檢視cpu、記憶體異常的程序pid。

free -- 檢視系統整體記憶體狀況。

vmstat  -- 檢視系統狀態、硬體和系統資訊等。檢視cpu使用情況、上下文切換情況、程序數(是否過多?)。

iostat -- 檢視cpu 負載,硬碟狀況。常用於檢視io狀況(檢視cpu的工具很多)

sar -- 綜合工具,檢視系統狀況。這個太強大了,但自己一般只用類監控網路狀況(sar -n dev|edev)

mpstat -- 檢視多處理器狀況,類似vmstat,適用於多cpu場景(還有非多cpu的伺服器不?)

netstat -- 檢視網路狀況。常用於:產看程序監聽的埠、各個埠的recv|send佇列狀況(是否過載)、收發包的簡單統計

iptraf -- 實時網路狀況監測。

tcpdump -- 抓取網路資料報,詳細分析。強大的網路包分析工具。

tcptrace -- 資料報分析工具。

netperf -- 網路頻寬工具。

dstat  -- 綜合工具,綜合了 vmstat, iostat, ifstat, netstat 等多個資訊。

常用工具如上,一般情況下,直接啟動命令看輸出。但有時需要監控某個特定時間系統的執行狀況,簡單辦法就是定時啟動命令,並將命令輸入列印到log, 或者使用諸如sar這類強大的效能監視工具。

貼幾個監控工具的包裝指令碼,結合crontab即可實現定時啟動、收集一定時間間隔的效能資料。

#!/bin/bash

echo

"$0 start...

"`date

`echo

iostat -dmxt 1 $1

echo

"$0 finish.

"`date`

#!/bin/bash

echo

"$0 start...

"`date

`echo

mpstat -p all 1 $1

echo

echo

"$0 finish.

"`date`

#!/bin/bash

num=5000000

if [[ $# -gt 0

]]then

num=$1

fiecho

"$0 start test...`date`

"echo

#for i in `seq

0 $num` # if

num is large, waste much resource.

#for i in # must be constant

i=0while [[ i -lt $num ]]

doecho `date

` netstat -anp -u # udp only -t --tcp

echo

sleep

1((i++))

done

echo

"$0 finish test.`date`

"

Linux效能監控工具

top 顯示所有程序情況,vmstat 顯示系統活動,硬體和系統資訊,uptime,w 顯示系統的平均負載,ps,pstree 顯示程序,free 如果不帶任何引數輸入,預設是以kb為單位輸出 記憶體使用情況,iostat 顯示cpu負載和磁碟活動資訊,sar 收集和報告系統的狀態,mpstat 在...

Linux效能監控工具

top 顯示所有程序情況,vmstat 顯示系統活動,硬體和系統資訊,uptime,w 顯示系統的平均負載,ps,pstree 顯示程序,free 如果不帶任何引數輸入,預設是以kb為單位輸出 記憶體使用情況,iostat 顯示cpu負載和磁碟活動資訊,sar 收集和報告系統的狀態,mpstat 在...

Linux效能監控 vmstat

r the number of processes waiting for run time.等待執行的程序數 b the number of processes in uninterruptible sleep.處在非中斷睡眠狀態的程序數 swpd the amount of virtual me...