0.前言
Sysbench的作者于2016年将十年未变的sysbench升级至1.0版本,较 老版本有了非常大的改变。在使用过程中由于官方文档不太完善 ,遂有此文。1.新特性
官方文档中的升级说明:- 更好的性能和扩展性,比0.4版本快了3.44倍,比0.5版本快了6.44倍。
- 改良了命令行语法
- 扩展了SQL API,例如每个线程可以有多个连接。
- latency直方图功能
- 错误hooks
- 报告hooks
- 自定义和并行性命令
- 多种report类型,如JSON,CSV,SQL等
最大的升级应该还是OLTP测试中的lua脚本。
2.安装
官方文档中已列出各种 安装方法,这里推荐一个更快速的,使用percona的源:点击(此处)折叠或打开
- root# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
- root# yum install sysbench
如果需要使用sysbench Test Suite,需要安装依赖包Cram:
点击(此处)折叠或打开
- root# pip install cram
点击(此处)折叠或打开
- root# wget https://bitheap.org/cram/cram-0.6.tar.gz
- root# tar zxvf cram-0.6.tar.gz
- root# cd cram-0.6
- root# make install
3.使用方法
sysbench --help中已经有了很详细的说明,参考此文件可以得到大部分信息。命令语法: sysbench [options]... [testname] [command]
options: 有 普通选项 和 伪随机选项 两类,大部分参数都不需要额外配置,使用默认即可。
log : 打开latency的直方图输出。
database: 默认即可
mysql: 填入需要压测的mysql的账号密码,请参阅下面的样例。
testname: 内建有 fileio、CPU、memory、threads、mutex这几个测试,mysql相关测试请直接调用相关脚本。
command:有prepare、run、cleanup、help这4个,请参阅下面的样例。
另外,每个测试的lua脚本也有一个help提示,命令如下:
点击(此处)折叠或打开
- root# sysbench oltp_read_write.lua help
- sysbench 1.0.8 (using bundled LuaJIT 2.1.0-beta2)
oltp_read_write.lua options:
--distinct_ranges=N Number of SELECT DISTINCT queries per transaction [1]
--sum_ranges=N Number of SELECT SUM() queries per transaction [1]
--skip_trx[=on|off] Don't start explicit transactions and execute all queries in the AUTOCOMMIT mode [off]
--secondary[=on|off] Use a secondary index in place of the PRIMARY KEY [off]
--create_secondary[=on|off] Create a secondary index in addition to the PRIMARY KEY [on]
--index_updates=N Number of UPDATE index queries per transaction [1]
--range_size=N Range size for range SELECT queries [100]
--auto_inc[=on|off] Use AUTO_INCREMENT column as Primary Key (for MySQL), or its alternatives in other DBMS. When disabled, use client-generated IDs [on]
--delete_inserts=N Number of DELETE/INSERT combination per transaction [1]
--tables=N Number of tables [1]
--mysql_storage_engine=STRING Storage engine, if MySQL is used [innodb]
--non_index_updates=N Number of UPDATE non-index queries per transaction [1]
--table_size=N Number of rows per table [10000]
--pgsql_variant=STRING Use this PostgreSQL variant when running with the PostgreSQL driver. The only currently supported variant is 'redshift'. When enabled, create_secondary is automatically disabled, and delete_inserts is set to 0
--simple_ranges=N Number of simple range SELECT queries per transaction [1]
--order_ranges=N Number of SELECT ORDER BY queries per transaction [1]
--range_selects[=on|off] Enable/disable all range SELECT queries [on]
--point_selects=N Number of point SELECT queries per transaction [10]
4.示例
点击(此处)折叠或打开
- root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 prepare #建表,造数据
- root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 run #运行压测程序
- root# /usr/bin/sysbench --threads=64 --time=600 --histogram=on --mysql_host=10.65.200.43 --mysql-port=6606 --mysql-user=sysbench --mysql-password=sysbench /usr/share/sysbench/oltp_read_write.lua --table_size=10000000 cleanup #执行清理工作
--threads=64 测试时使用的线程数
--time=600 测试时间
--histogram=on 在报告中是否输出关于延迟的直方图,建议开启
--table_size=10000000 数据表的大小
现在可以愉快的进行测试了。
参考资料:
1. https://github.com/akopytov/sysbench2. https://bitheap.org/cram/
3. https://archive.fosdem.org/2017/schedule/event/sysbench/attachments/slides/1519/export/events/attachments/sysbench/slides/1519/sysbench.pdf