sysbench OLTP基準測試

一、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

    http://my.oschina.net/anthonyyau/blog/290030 socket

相關文章
相關標籤/搜索