一、sysbench參數html
# 經過參數 --num-threads=N 建立測試線程的數目。默認爲1. --max-requests=N 請求的最大數目。默認爲10000,0表明不限制。 --max-time=N 最大執行時間,單位是s。默認是0,不限制。 --forced-shutdown=STRING 超過max-time強制中斷。默認是off。] --thread-stack-size=SIZE 每一個線程的堆棧大小。默認是32K。 --init-rng=[on|off] 在測試開始時是否初始化隨機數發生器。默認是off。 --test=STRING 指定測試項目名稱。 --debug=[on|off] 是否顯示更多的調試信息。默認是off。 --validate=[on|off] 在可能狀況下執行驗證檢查。默認是off。 --num-threads=8 表示發起 8個併發鏈接 --oltp-read-only=off 表示不要進行只讀測試,也就是會採用讀寫混合模式測試 --report-interval=10 表示每10秒輸出一次測試進度報告 --rand-type=uniform 表示隨機類型爲固定模式,其餘幾個可選隨機模式:uniform(固定),gaussian(高斯),special(特定的),pareto(帕累託) --max-time=120 表示最大執行時長爲 120秒 --max-requests=0 表示總請求數爲 0,由於上面已經定義了總執行時長,因此總請求數能夠設定爲 0;也能夠只設定總請求數,不設定最大執行時長 --percentile=99 表示設定採樣比例,默認是 95%,即丟棄1%的長請求,在剩餘的99%裏取最大值
二、OLTP壓測mysql
一、建立數據表
web
#建立數據庫 mysqladmin create sbtest sysbench --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 --mysql-table-engine=innodb --oltp-table-size=10000000 prepare #5.0版本開始使用 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua #若是在本機,也可使用 –mysql-socket 指定 socket 文件來鏈接。加載測試數據時長視數據量而定,若過程比較久須要#稍加耐心等待。 #真實測試場景中,數據表建議不低於10個,單表數據量不低於500萬行,固然了,要視服務器硬件配置而定。若是是配備了SSD或者PCIE SSD這種高IOPS設備的話,則建議單表數據量最少不低於1億行。
二、壓測sql
sysbench --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 --num-threads=16 --max-time=600 run #壓測1個小時讀寫,16線程 #使用16個線程開始測試,只讀模式。 #sysbench --mysql-db=sbtest --max-requests=0 --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=10000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --oltp-read-only --mysql-password=123456 --num-threads=16 --max-time=60 run 即:模擬 對10個表併發OLTP測試,每一個表1000萬行記錄,持續壓測時間爲 1小時。 真實測試場景中,建議持續壓測時長不小於30分鐘,不然測試數據可能不具參考意義。
三、壓測結果shell
OLTP test statistics: queries performed: read: 170996 -- 讀總數 write: 48856 -- 寫總數 other: 24428 -- 其餘操做總數(SELECT、INSERT、UPDATE、DELETE以外的操做,例如COMMIT等) total: 244280 transactions: 12214 (203.47 per sec.) 總事務數(每秒事務數) read/write requests: 219852 (3662.51 per sec.) 讀寫總數(每秒讀寫次數) other operations: 24428 (406.95 per sec.) 其餘操做總數(每秒其餘操做次數) ignored errors: 0 (0.00 per sec.) reconnects: 0 (0.00 per sec.) General statistics: total time: 60.0276s total number of events: 12214 - 共發生多少事務數 total time taken by event execution: 959.8838s 全部事務耗時相加(不考慮並行因素) response time: min: 8.07ms -- 最小耗時 avg: 78.59ms -- 平均耗時 max: 750.64ms -- 最長耗時 approx. 95 percentile: 141.56ms -- 超過99%平均耗時 Threads fairness: events (avg/stddev): 763.3750/7.61 execution time (avg/stddev): 59.9927/0.02
四、清理數據數據庫
#清理測試的殘留信息 sysbench --mysql-db=sbtest --test=/root/sysbench/sysbench/sysbench/tests/db/oltp.lua --oltp-table-size=1000000 --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password=123456 cleanup
五、參考文章服務器
http://imysql.com/2014/10/17/sysbench-full-user-manual.shtml併發
http://www.cnblogs.com/ylqmf/archive/2012/09/29/2708562.html app