sysbench命令详细介绍

发布时间 2023-10-07 10:39:09作者: Dufe王彬
相关命令:暂无相关命令
 
一、sysbench功能测试参数

fileio   磁盘IO测试。
cpu      CPU性能测试。
memory   内存分配及传输速度测试。
threads  线程性能测试。
mutex    互斥性能测试。
oltp     oltp测试



二、通用参数

–-num-threads=N   使用的线程数量,默认值为1。

–-max-requests=N  总请求数,与--max-time选择一个设置即可,默认值为10000。

–-max-time=N  总执行时间,与--max-requests选择一个设置即可,单位为s,默认值为0。

–-forced-shutdown=STRING  超过--max-time后强制中断,默认为off。

–-thread-stack-size=SIZE  每个线程的stack大小,默认为64K。

–-tx-rate=N  sysbench尝试像数据库发送的事务数tps。

–-report-interval=N  表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果,默认值为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 测试类型,可选项:fileio/cpu/memory/threads/mutex/oltp脚本路径。

–-debug=[on|off]  debug模式输出,默认值为off。

–-validate=[on|off]  在可能的情况下执行验证检查,默认为off。

–-help=[on|off]  输出help信息,默认为off。

–-version=[on|off]  输出版本信息,默认为off。

–-rand-type=STRING 表示随机类型的模式,共有4种模式:uniform(固定),gaussian(高斯),special(特定),pareto(帕雷特),默认值为:special。

–-rand-spec-iter number of iterations used for numbers generation [12]

–-rand-spec-pct=N 对于’special’随机模式中指定值的比例,默认值为75。

–-rand-seed=N seed for random number generator, ignored when 0 [0]

–-rand-pareto-h=N parameter h for pareto distibution [0.2]

–-config-file sysbench配置文件路径。



三、日志参数


–-verbosity=N  初测试报告信息之外的信息输出级别,5为debug信息,0位仅仅输出严重信息,默认值为3。

–-percentile=N 查询相应时间采样的百分比,默认值为95%。


四、通用数据库参数

–-db-driver=STRING 特殊的数据库驱动。

–-db-ps-mode=STRING SQL是否需要预编译,模式有:auto/disable,默认为disable。

–-db-debug=[on|off] 输出数据库层面的debug信息,默认为off。


五、MySQL相关参数

–-mysql-host=[LIST,…] MySQL服务器IP/hostname,默认:localhost。

–-mysql-port=[LIST,…] MySQL端口号,默认:3306。

–-mysql-socket=[LIST,…] MySQL的socket文件。

–-mysql-user=STRING MySQL的用户名,默认:sbtest

–-mysql-password=STRING MySQL用户密码。

–-mysql-db=STRING MySQL数据库。

–-mysql-table-engine=STRING 用户测试表的表结构引擎,可选项:myisam/innodb/bdb/heap/ndbcluster/federated,默认值:innodb。

–-mysql-engine-trx=STRING 存储引擎是否使用事务,可选项:yes,no,auto,默认值:auto。

–-mysql-ssl=[on|off] 使用SSL连接,默认值:off。

–-mysql-ssl-cipher=STRING 为SSL连接指定密码。

–-mysql-compression=[on|off] 使用压缩,默认值:off。

–-myisam-max-rows=N MyISAM表的最大记录数,默认值:1000000。

–-mysql-debug=[on|off] 输出MySQL的debug信息,默认值:off。

–-mysql-ignore-errors=[LIST,…] MySQL忽略的错误代码,可选项:1213/1020/1205

–-mysql-dry-run=[on|off] 假装MySQL所有客户端API都被调用,但实际并不执行它们,默认值:off


六、fileio相关参数

sysbench --test=fileio help

–-file-num=N 创建文件的数量,默认值:128。

–-file-block-size=N  每次IO操作的block大小,默认值:16K。

–-file-total-size=SIZE 所有文件大小总和,默认值:2G。

–-file-test-mode=STRING 测试模式:seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)。

–-file-io-mode 文件操作模式:sync(同步),async(异步),mmap(快速map映射),默认值:sync。

–-file-async-backlog number of asynchronous operatons to queue per thread [128]。

–-file-extra-flags=STRING 使用额外的标志符来打开文件{sync,dsync,direct}。

–-file-fsync-freq=N 在完成N次请求之后,执行fsync(),0表示不使用fsync,默认值:100。

–-file-fsync-all=[on|off] 每次写操作后执行fsync(),默认值:off。

–-file-fsync-end=[on|off] 测试结束后执行fsync(),默认值:on。

–-file-fsync-mode=STRING 使用fsync或fdatasync方法进行同步,默认值:fsync。

–-file-merged-requests=N 尽可能的合并N个IO请求数,0表示不合并,默认值:0。

–-file-rw-ratio=N 测试时候的读写比例,默认值:1.5(即3:2)。


七、cpu相关参数

sysbench --test=cpu help

–-cpu-max-prime=N 最大质数生成器的上限,默认值:10000。


八、memory相关参数

sysbench --test=memory help

--memory-block-size=SIZE 测试时内存块大小,默认值:1K。

–-memory-total-size=SIZE 传输数据可使用的最大内存大小,默认值:100G。

–-memory-scope=STRING 内存访问范围:global/local,默认值:global。

–-memory-hugetlb=[on|off 从HugeTLB池分配内存,默认值:off。

–-memory-oper=STRING 内存操作类型:read/ write/none,默认值:write。

–-memory-access-mode=STRING 内存访问方式:seq(顺序)/rnd(随机),默认值:seq。


九、threads相关参数

sysbench --test=threads help

–-thread-yields=N 每个请求产生多少线程,默认值:1000。

–-hread-locks=N 每个线程的锁的数量,默认值:8。


十、mutex相关参数

sysbench --test=mutex help

-–mutex-num=N 数组互斥的总大小,默认值:4096。

-–mutex-locks=N 每个线程互斥锁的数量,默认值:50000。

-–mutex-loops=N 内部互斥锁的空循环数量,默认值:10000


十一,oltp测试

sysbench --test=oltp help

--oltp-test-mode=STRING             测试类型:simple(简单select测试),complex(事务测试),nontrx(非事务测试),sp(存储过程) ;默认complex
--oltp-reconnect-mode=STRING        连接类型:session(每个线程到测试结束不重新连接),transaction(执行每个事务重新连接),query(每一个查询重新连接),random(随机);默认 [session]
--oltp-sp-name=STRING               指定执行测试的存储过程名
--oltp-read-only=[on|off]           仅执行select测试,默认关闭
--oltp-avoid-deadlocks=[on|off]     更新过程中忽略死锁,默认[off]
--oltp-skip-trx=[on|off]            语句以bigin/commit开始结尾,默认[off]
--oltp-range-size=N                 范围查询的范围大小,默认 [100],例如begin 100 and 200
--oltp-point-selects=N              单个事务中select查询的数量,默认 [10]
--oltp-use-in-statement=N           每个查询中主键查找(in 10个值)的数量,默认 [0]
--oltp-simple-ranges=N              单个事务中执行范围查询的数量(SELECT c  FROM sbtest WHERE id BETWEEN  N AND  M),默认[1]
--oltp-sum-ranges=N                 单个事务中执行范围sum查询的数量,默认 [1]
--oltp-order-ranges=N               单个事务中执行范围order by查询的数量,默认[1]
--oltp-distinct-ranges=N            单个事务中执行范围distinct查询的数量,默认[1]
--oltp-index-updates=N              单个事务中执行索引更新的操作的数量,默认[1]
--oltp-non-index-updates=N          单个事务中执行非索引更新操作的数量,默认[1]
--oltp-nontrx-mode=STRING           指定单独非事务测试类型进行测试,默认select {select, update_key, update_nokey, insert, delete} [select]
--oltp-auto-inc=[on|off]            id列默认自增,默认[on]
--oltp-connect-delay=N              指定每一次重新连接延时的时长,默认1秒 [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            指定测试的表名,默认[sbtest]
--oltp-table-size=N                 指定表的记录大小,默认[10000]
--oltp-dist-type=STRING             随机数分布状态。uniform(均匀分布)、gauss(高斯分布)、special(特殊分布),默认 [special]
--oltp-dist-iter=N                  number of iterations used for numbers generation [12]
--oltp-dist-pct=N                   启用百分比特殊分布,默认 [1]
--oltp-dist-res=N                   special 百分比[75]
--oltp-point-select-mysql-handler=[on|off] Use MySQL HANDLER for point select [off]
--oltp-point-select-all-cols=[on|off]    select查询测试时select所有列,默认[off]
--oltp-secondary=[on|off]            索引不是主键索引而是二级索引,默认[off]
--oltp-num-partitions=N              指定表分区的数量,默认 [0]

--oltp-num-tables=N                  指定测试表的数量,默认[1]

# 指定了最大的质数发生器数量为 20000
sysbench --test=cpu --cpu-max-prime=20000 run

# 发送64次/个测试线程请求,每次/个线程请求产生/生成100个数量,每个线程的锁数量为2
sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run

# 进行磁盘IO测试,指定了最大创建16个线程,创建的文件总大小为3G,文件读写模式为随机读
sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare
sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run
sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup

# 指定了本次测试整个过程是在内存中传输 4G 的数据量,每个 block 大小为 8K
sysbench --test=memory --memory-block-size=8k --memory-total-size=4G run

# 事务测试,测试12个线程执行1万条请求,10个表,每个表大小100W
sysbench --num-threads=12 --max-requests=100000  --test=oltp --mysql-user=root --mysql-password=root --oltp-test-mode=complex --mysql-db=sbtest --oltp-table-size=1000000 --oltp-num-tables=10 prepare
sysbench --num-threads=12 --max-requests=100000  --test=oltp --mysql-user=root --mysql-password=root --oltp-test-mode=complex --mysql-db=sbtest --oltp-table-size=1000000 --oltp-num-tables=10 run
sysbench --num-threads=12 --max-requests=100000  --test=oltp --mysql-user=root --mysql-password=root --oltp-test-mode=complex --mysql-db=sbtest --oltp-table-size=1000000 --oltp-num-tables=10 cleanup