Sysbench多线程性能测试工具
程序员文章站
2024-02-19 12:39:58
最近用sysbench进行了较多的性能测试,也总结一下它的特点和用法和需要注意的事项。sysbench是一个多线程性能测试工具,可以进行cpu/内存/io/数据库等性能测试...
最近用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]
~/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]
推荐阅读
-
Sysbench多线程性能测试工具
-
mysql性能测试工具之tpcc-mysql
-
给Windows + Apache 22 + PHP 53 安装PHP性能测试工具 xhprof
-
mysql性能测试工具之tpcc-mysql
-
【转】给Windows + Apache 2.2 + PHP 5.3 安装PHP性能测试工具 xhprof,性能测试xhprof_PHP教程
-
mysql性能测试工具之mysqlslap
-
用sysbench来测试MySQL的性能的教程
-
基于在生产环境中使用php性能测试工具xhprof的详解 游戏性能测试工具 web性能测试工具 网络性能测试工
-
Sysbench多线程性能测试工具
-
数据库性能测试:sysbench用法详解