Mysql壓力測試shell腳本 Mysql自帶了壓力測試工具mysqlslap,所以我們可以不用自己編寫程序來測試Mysql讀取的壓力。壓力測試shell腳本如下: www.2cto.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 www.2cto.com 上面腳本的意思是每隔100ms循環做這樣的事:模擬100個mysql客戶端,對數據庫test的表test執行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就是更新命令,等等,具體可以查看文檔說明。將相鄰兩次的次數相減,就得到這個時間間隔內執行的次數。 PS:除了iostat等命令外,也可以通過top命令來查看io的負載(看wait的百分比,如果大於等於 1 / cpu核數,則說明硬盤IO有問題)。請參考英文文章:Understanding Disk I/O - when should you be worried? 來源 http://blog.csdn.net/skyman_2001