Mysql壓力測試shell腳本
Mysql自帶了壓力測試工具mysqlslap,所以我們可以不用自己編寫程序來測試Mysql讀取的壓力。壓力測試shell腳本如下: www.bitsCN.com
[plain]
#!/bin/sh
while true
do
mysqlslap --concurrency=100 --iterations=10 --create-schema='test' --query="insert into test(c1,c2,c3,c4) values(1,1,1,'a')" --number-of-queries=200 --debug-info -uroot -p123456
usleep 100
done
上面腳本的意思是每隔100ms循環(huán)做這樣的事:模擬100個mysql客戶端,對數據庫test的表test執(zhí)行200次插入(number-of-queries = concurrency * 每個mysql客戶端的查詢次數,所以這里的每個mysql客戶端的查詢次數是2次),迭代10次。--debug-info是打印內存和CPU的相關信息。
接著我們可以編寫shell腳本來輸出指定時間間隔(比如1秒)內的mysql操作次數,shell腳本如下:
[plain]
#!/bin/sh
lastTimes="0"
while true
do
currentTimes=$(mysql -uroot -p'123456' -e "show global status like 'Com_insert'" | sed '1d' | awk '{print $2}')
times=$(expr ${currentTimes} - ${lastTimes})
lastTimes="${currentTimes}"
echo "${times}"
sleep 1
done
查看mysql各種操作的次數,可以通過查看global status里的'Com_'開頭的變量,它們就是mysql的操作命令,比如Com_insert就是插入命令、Com_update就是更新命令,等等,具體可以查看文檔說明。將相鄰兩次的次數相減,就得到這個時間間隔內執(zhí)行的次數。
PS:除了iostat等命令外,也可以通過top命令來查看io的負載(看wait的百分比,如果大于等于 1 / cpu核數,則說明硬盤IO有問題)。請參考英文文章:Understanding Disk I/O - when should you be worried?
來源 http://blog.csdn.net/skyman_2001
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com