sysbench測試工具


sysbench簡介

     Sysbench是一個模塊化的、跨平台、多線程基准測試工具,主要用於評估測試各種不同系統參數下的數據庫負載情況。它主要包括以下幾種方式的測試:cpu性能,磁盤io性能,線程調度性能,內存分配及傳輸速度和數據庫性能。由於本人是dba,因此重點關注sysbench測試數據庫的場景。目前sysbench支持mysql,postgreSQL,oracle三種數據源。

下載&安裝

1)  下載

通過http://download.csdn.net/download/jungeshidai/8854157頁面下載sysbench0.5版本

2)  編譯安裝 

tar -zxvf sysbench-0.5.tar.gz cd sysbench-0.5 ./autogen.sh ./configure ./make ./make install

3)  可能遇到的問題

   a) lua腳本,因為sysbench0.5的測試用例改為lua,若有童鞋使用0.5版本,執行命令時仍然采用老的方式,--test=oltp,就會出現報錯

    “PANIC: unprotected error in call to Lua API (cannot open oltp: No such file or directory)”,因此注意將--test=oltp改為./tests/db/oltp.lua即可。

   b) 運行oltp測試時,默認會在sbtest庫里面建表測試,但是庫需要自己預先建立好,否則就會出現連不上database的錯誤,當然,也可以通過參數--mysql-db指定。

測試過程

測試主要包括准備數據階段,測試階段和清理階段。

1)  准備階段

sysbench --test=./tests/db/oltp.lua --mysql-table-engine=innodb --oltp-table-size=100000 --mysql-socket=/u01/my3306/run/mysql.sock --mysql-user=chuck --mysql-host=localhost --mysql-password=chuck --num-threads=20 prepare

2)  測試階段

sysbench --test=./tests/db/oltp.lua --mysql-table-engine=innodb --num_threads=10  --oltp-table-size=100000 --mysql-db=test --mysql-user=chuck --oltp-tables-count=10 --mysql-password=chuck  run

3)  清理階段

sysbench --test=./tests/db/select.lua --mysql-table-engine=innodb --num_threads=10 --oltp-table-size=100000 --mysql-db=test --mysql-user=chuck --oltp-tables-count=10 --mysql-password=chuck cleanup

重要參數

--test=STRING
指定測試用例,sysbench0.5所有測試用例采用lua腳本編寫,用戶可以根據需求寫符合自己測試的腳本,因此非常靈活。比如:--test=./tests/db/select.lua

--max-requests=N,設置請求的數目,默認值是10000

--max-time=N,設置執行的時間,默認是0,即沒有限制
這兩個參數可以配合起來使用,默認值表示,執行完10000個請求,不受時間限制。因為請求可以多種多樣,對於不同的lua腳本,對應的就是不同的請求,比如
insert.lua,delete.lua,select.lua等。當然你也可以編輯自己的lua腳本,封裝成為一個event。因此,對於不同類型的測試用例,執行時間會相差很大。對於運行時間很快的測試用例,可以增大max-requests的值,對於運行很慢的測試用例,可以通過設置max-time來限制運行時常。

--report-interval=N,設置打印的時間間隔,默認值是0,設置執行的時長,以秒為單位對於很長時間的測試用例,為了得到實時的測試信息,可以設置該參數,否則,只有一直干等,運行結束后才能看到測試報告。

--percentile=N,設置采樣比例,默認是95%

--num-threads=N,設置並發的線程數目

執行結果解讀

這里以oltp.lua測試用例的測試結果來簡單說明下。

sysbench --test=./tests/db/oltp.lua --num_threads=10  --oltp-table-size=100000 --mysql-db=test --mysql-user=chuck --oltp-tables-count=10 --mysql-password=chuck --max-requests=100000 --report-interval=5 --percentile=95  run

1)  實時信息

每5s采集一次實時信息,tps表示事務數目,writes/reads分別表示平均每秒寫和讀的次數

[   5s] threads: 10, tps: 31.80, reads/s: 460.79, writes/s: 128.00  

[  10s] threads: 10, tps: 35.40, reads/s: 502.00, writes/s: 143.00

[  15s] threads: 10, tps: 31.20, reads/s: 438.20, writes/s: 124.20

[  20s] threads: 10, tps: 33.00, reads/s: 463.60, writes/s: 130.40

[  25s] threads: 10, tps: 33.60, reads/s: 462.40, writes/s: 134.40

[  30s] threads: 10, tps: 34.20, reads/s: 484.80, writes/s: 137.20

[  35s] threads: 10, tps: 31.00, reads/s: 438.20, writes/s: 124.40

[  40s] threads: 10, tps: 32.20, reads/s: 445.40, writes/s: 128.60

2) 匯總信息

OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           40000
        other:                           20000
        total:                            200000
    transactions:                     10000  (32.89 per sec.)  //總共執行了10000個事務
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:           180000 (592.04 per sec.) //讀寫請求有180000,一個事務包含多個讀寫請求
    other operations:                20000  (65.78 per sec.)

Test execution summary:
    total time:                          304.0326s  //總共運行了5分鍾
    total number of events:        10000
    total time taken by event execution: 3039.9491s
    per-request statistics:
         min:                                 27.73ms
         avg:                                303.99ms
         max:                               1940.30ms
         approx.  95 percentile:      635.58ms   //95%的平均耗時為635ms,這里對統計值有點疑問,95%的是635ms,而平均值是300ms。

Threads fairness:
    events (avg/stddev):              1000.0000/14.47
    execution time (avg/stddev):   303.9949/0.02
     

參考文檔

http://www.tuicool.com/articles/iQFF3i

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM