linux性能監控


緣起

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

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即可實現定時啟動、收集一定時間間隔的性能數據。

iostat:

#!/bin/bash

echo "$0 Start... "`date`
echo 

iostat -dmxt 1 $1  

echo "$0 Finish. "`date`

mpstat:

#!/bin/bash

echo "$0 Start... "`date`
echo 

mpstat -P ALL 1 $1

echo
echo "$0 Finish. "`date`

netstat:

#!/bin/bash

NUM=5000000
if [[ $# -gt 0 ]]
then
        NUM=$1
fi

echo "$0 Start test...`date`"
echo 

#for i in `seq 0 $NUM`   # if NUM is large, waste much resource.
#for i in {1..100}    # {1..100}  must be constant

i=0
while [[ i -lt $NUM ]]
do
    echo `date`
        netstat -anp -u    # udp only  -t -- tcp
    
    echo 
    sleep 1

        ((i++))
done

echo "$0 Finish test.`date`"

相關文章:

Linux Debug tools
linux 下的sar工具命令小結


免責聲明!

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



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