Sysbench介紹與使用

來源:互聯網
上載者:User

最近用sysbench進行了較多的效能測試,也總結一下它的特點和用法和需要注意的事項。sysbench是一個多線程效能測試工具,可以進行CPU/記憶體/IO/資料庫等效能測試。不過我絕大多數的時候都是用它來對資料庫(MySQL)進行oltp測試。它能測哪些東西,怎麼測讓我從它的命令協助來回答。

~/zbs$ sysbench --help 
Missing required command argument. 
Usage: 
  sysbench [general-options]... --test=<test-name> [test-options]... command 

上面就大概的用法,--test=指定我們需要測什麼類型,那麼--test有哪幾種類型呢?fileio/cpu/memory/threads/mutex,不好意思前面這幾個我都沒測過,我主要是用它來測資料庫的效能,但為什麼沒有資料庫這個選項呢,這是我是用了最新的版本0.5,它與0.4的版本最大區別在於支援多表測試,執行即時列印統計資訊,支援自訂lua指令碼來設定測試行為。

Compiled-in tests: 
  fileio - File I/O test 
  cpu - CPU performance test 
  memory - Memory functions speed test 
  threads - Threads subsystem performance test 
  mutex - Mutex performance test 

如果你用sysbench0.4大概會看到如下,請注意oltp這個選項就是測資料庫用的。

Compiled-in tests: 
  fileio - File I/O test 
  cpu - CPU performance test 
  memory - Memory functions speed test 
  threads - Threads subsystem performance test 
  mutex - Mutex performance test 
  oltp - OLTP test 

看完了測試模式之後,那麼它有一些什麼主要的其他控制參數呢?首先說這個每個測試模式自己特有的參數怎麼擦看 sysbench --test=<test-mode> help,比如我這裡(請注意,由於sysbench0.5的--test選項對資料庫的測試不再使用oltp這個選項而是通過指定lua指令碼,因此利用前面這個命令查看不到下面的結果,所以如果要查看還是通過0.4的吧,如果誰找到了方式在0.5版本裡查看oltp的參數也請告訴一下。另外雖然0.5與0.4版本不同但是參數還是基本上保持相容的):

~$ sysbench --test=oltp help 
sysbench 0.4.12:  multi-threaded system evaluation benchmark 
 
oltp options: 
  --oltp-test-mode=STRING        test type to use {simple,complex,nontrx,sp} [complex] 
  --oltp-reconnect-mode=STRING    reconnect mode {session,transaction,query,random} [session] 
  --oltp-sp-name=STRING          name of store procedure to call in SP test mode [] 
  --oltp-read-only=[on|off]      generate only 'read' queries (do not modify database) [off] 
  --oltp-skip-trx=[on|off]        skip BEGIN/COMMIT statements [off] 
  --oltp-range-size=N            range size for range queries [100] 
  --oltp-point-selects=N          number of point selects [10] 
  --oltp-simple-ranges=N          number of simple ranges [1] 
  --oltp-sum-ranges=N            number of sum ranges [1] 
  --oltp-order-ranges=N          number of ordered ranges [1] 
  --oltp-distinct-ranges=N        number of distinct ranges [1] 
  --oltp-index-updates=N          number of index update [1] 
  --oltp-non-index-updates=N      number of non-index updates [1] 
  --oltp-nontrx-mode=STRING      mode for non-transactional test {select, update_key, update_nokey, insert, delete} [select] 
  --oltp-auto-inc=[on|off]        whether AUTO_INCREMENT (or equivalent) should be used on id column [on] 
  --oltp-connect-delay=N          time in microseconds to sleep after connection to database [10000] 
  --oltp-user-delay-min=N        minimum time in microseconds to sleep after each request [0] 
  --oltp-user-delay-max=N        maximum time in microseconds to sleep after each request [0] 
  --oltp-table-name=STRING        name of test table [sbtest] 
  --oltp-table-size=N            number of records in test table [10000] 
  --oltp-dist-type=STRING        random numbers distribution {uniform,gaussian,special} [special] 
  --oltp-dist-iter=N              number of iterations used for numbers generation [12] 
  --oltp-dist-pct=N              percentage of values to be treated as 'special' (for special distribution) [1] 
  --oltp-dist-res=N              percentage of 'special' values to use (for special distribution) [75] 
 
General database options: 
 
  --db-driver=STRING  specifies database driver to use ('help' to get list of available drivers) 
  --db-ps-mode=STRING prepared statements usage mode {auto, disable} [auto] 
 
 
Compiled-in database drivers: 
  mysql - MySQL driver 
 
mysql options: 
  --mysql-host=[LIST,...]      MySQL server host [localhost] 
  --mysql-port=N                MySQL server port [3306] 
  --mysql-socket=STRING        MySQL socket 
  --mysql-user=STRING          MySQL user [sbtest] 
  --mysql-password=STRING      MySQL password [] 
  --mysql-db=STRING            MySQL database name [sbtest] 
  --mysql-table-engine=STRING  storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb] 
  --mysql-engine-trx=STRING    whether storage engine used is transactional or not {yes,no,auto} [auto] 
  --mysql-ssl=[on|off]          use SSL connections, if available in the client library [off] 
  --myisam-max-rows=N          max-rows parameter for MyISAM tables [1000000] 
  --mysql-create-options=STRING additional options passed to CREATE TABLE [] 

上面有這麼多參數,相信都能基本看懂吧,我等下舉例的時候會講到裡面的參數代表什麼含義。然後知道怎麼查看具體某個測試模式的用法之後再來看general-options,通用參數,下面看看0.5的參數(相對0.4的增加了不少,有些參數的名稱也變了,怎麼辨別---對某個參數解釋一模一樣):

General options: 
  --num-threads=N            number of threads to use [1] 
  --max-requests=N            limit for total number of requests [10000] 
  --max-time=N                limit for total execution time in seconds [0] 
  --forced-shutdown=STRING    amount of time to wait after --max-time before forcing shutdown [off] 
  --thread-stack-size=SIZE    size of stack per thread [64K] 
  --tx-rate=N                target transaction rate (tps) [0] 
  --report-interval=N        periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0] 
  --report-checkpoints=[LIST,...]dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. [] 
  --test=STRING              test to run 
  --debug=[on|off]            print more debugging info [off] 
  --validate=[on|off]        perform validation checks where possible [off] 
  --help=[on|off]            print help and exit 
  --version=[on|off]          print version and exit [off] 
  --rand-init=[on|off]        initialize random number generator [off] 
  --rand-type=STRING          random numbers distribution {uniform,gaussian,special,pareto} [special] 
  --rand-spec-iter=N          number of iterations used for numbers generation [12] 
  --rand-spec-pct=N          percentage of values to be treated as 'special' (for special distribution) [1] 
  --rand-spec-res=N          percentage of 'special' values to use (for special distribution) [75] 
  --rand-seed=N              seed for random number generator, ignored when 0 [0] 
  --rand-pareto-h=N          parameter h for pareto distibution [0.2] 

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.