Mysql壓力測試shell腳本

轉載請註明,來自:http://blog.csdn.net/skyman_2001

Mysql自帶了壓力測試工具mysqlslap,所以我們可以不用自己編寫程序來測試Mysql讀取的壓力。壓力測試shell腳本如下:

#!/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循環做這樣的事:模擬100個mysql客戶端,對數據庫test的表test執行200次插入(number-of-queries = concurrency * 每個mysql客戶端的查詢次數,所以這裏的每個mysql客戶端的查詢次數是2次),迭代10次。--debug-info是打印內存和CPU的相關信息。

接着我們可以編寫shell腳本來輸出指定時間間隔(比如1秒)內的mysql操作次數,shell腳本如下:

#!/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就是更新命令,等等,具體可以查看文檔說明。將相鄰兩次的次數相減,就得到這個時間間隔內執行的次數。

PS:除了iostat等命令外,也可以通過top命令來查看io的負載(看wait的百分比,如果大於等於 1 / cpu核數,則說明硬盤IO有問題)。請參考:Understanding Disk I/O - when should you be worried?

發佈了184 篇原創文章 · 獲贊 13 · 訪問量 71萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章