以下指令碼寫於redmine效能排查時,用於定位系統效能瓶頸的取樣,源位址為~/performancelog/collectlog.sh中,計畫放入github的**片段庫中.
注: 如果mysql的位址或者目錄更換,此指令碼中dstat 的mysql相關資料的採集需要重寫其外掛程式的mysql連線部分的**。 注: 如果mysql的位址或者目錄有更換,又想使用以下指令碼採集資料,需要重寫其mysql連線部分的**,才能讓指令碼中dstat 的mysql相關資料的採集正常獲取。
#!/bin/bashcd /home/pset/performancelog/#create
dirfor
today
today=`date
"+%y%m%d"`
if [ ! -d $today ]; then
mkdir
$today;
ficd $today
#declare var to remember current hour.
hour=`date
"+%h"`
echo
"current hour is:
"$hour
postfix="
_nohup.log
"filenameofdstat=$hour"
_"$today"
_dstat
"$postfix"
.csv
"echo
$filenameofdstat
filenameofiostat=$hour"
_"$today"
_iostat
"$postfix
echo
$filenameofiostat
filenameofpidstat=$hour"
_"$today"
_pidstat
"$postfix
echo
$filenameofpidstat
filenameoffree=$hour"
_"$today"
_free
"$postfix
echo
$filenameoffree
filenameofmeminfo=$hour"
_"$today"
_meminfo
"$postfix
echo
$filenameofmeminfo
filenameofuptime=$hour"
_"$today"
_uptime
"$postfix
echo
$filenameofuptime
filenameofmpstat=$hour"
_"$today"
_mpstat
"$postfix
echo
$filenameofmpstat
filenameofiotop=$hour"
_"$today"
_iotop
"$postfix
echo
$filenameofiotop
filenameofsar=$hour"
_"$today"
_sar
"$postfix
echo
$filenameofsar
#the process
idwhich we are intrested in
.: mysqld ruby.bin
pidmysqld=`ps -e| grep mysqld.bin|awk
'nr==1 '`
pidruby=`ps -e| grep ruby.bin|awk
'nr==1 '`
export dstat_mysql_user='
root
'export dstat_mysql_pwd='
1111
'nohup dstat -t --mysql5-cmds --mysql5-io --mysql5-keys $@ -df --disk-util --disk --mem --proc --top-cpu --top-latency --top-bio --io --sys --filesystem --tcp --vm --output $filenameofdstat 1
3600 &nohup pidstat -p $pidmysqld -u -d -w -h 2
1800 > $filenameofpidstat &nohup mpstat -p all 2
1800 > $filenameofmpstat &nohup iotop -p $pidmysqld -n 1800 -d 2 > $filenameofiotop &nohup iostat -dxk 2
1800 > $filenameofiostat nohup sar -o $filenameofsar 2
1800 nohup
free > $filenameoffree nohup
cat /proc/meminfo > $filenameofmeminfo nohup
uptime > $filenameofuptime
in every day at april ,run the shell script at 1
min past each hour.
#1 * * 4 * /root/shift_my_times.sh
#1 * * 4 * /home/pset/performancelog/collectlog.sh
crontab設定成每小時啟動,並依照指令碼中設定的頻率採集資料:
10,4,10-23 * 4 * /home/pset/performancelog/collectlogs.sh
* * * 4 * /usr/local/bin/mycheckpoint --user=root --password=1111 --socket=/redmine/mysql/tmp/mysql.sock --database=mycheckpoint
產生此方案的關鍵系統指標展示:
pidstat:可以針對特定的程序,比如:mysql 或者其它程序
mpstat:用於檢視高峰時段某些cpu的idle是否異常。
dstat io:用於記錄每次採集的時間點,並統籌全域性的cpu mem io net mysql的指標資訊
系統效能指標
概念吞吐量 指在單位時間內系統處理的請求數,吞吐量是判斷乙個系統處理能力的常用指標 tps 每秒通過的事務數。事務 不是對頁面的一次操作,而是定義的乙個行為。eg 事務開始 登入 url 登入 事務結束 登入成功 概念指系統對請求作出響應的時間,現實中不同功能響應時間不盡相同,甚至同一功能在不同輸入...
通訊系統效能指標
1 資料傳輸速率 越高有效性越好 單位時間傳送的資料量 2 吞吐量 throughout 單位時間內通訊系統接收傳送的位元數,位元組數或幀數 3 頻帶利用率 單位頻帶內的傳輸速度,單位為 bit s hz,即每赫茲寬頻所能實現的位元率 4 協議效率 指所傳輸的資料報中,有效資料位與整個資料報長度的比...
Web系統效能優化系列 Web系統效能指標
效能評估是進行系統設計以及系統優化的重要事項,進行正確地效能評估才能有效地規劃系統容量,保證系統地穩定執行。在效能評估過程中常見的效能指標有以下幾種 tpstransactions per second,每秒傳輸的事務處理個數,即伺服器每秒處理的事務數量。tps是系統效能的乙個重要指標。系統整體處理...