sysbench压测msyql
1 安装sysbench
1.1 (1)快速安装说明
yum -y install sysbench sysbench --version #sysbench 1.0.9 |
1.2 (2)从源代码构建和安装
我们还可以在Github(https://github.com/akopytov/sysbench)上下载sysbench软件包,其中的 README.md显示了如何安装和使用它
2 文件IO基准测试
2.1 (1)创建文件
为了避免RAM破坏基准测试结果,我们应该创建大于RAM大小的文件。因此,我在数据目录中创建了150GB的文件:
cd /data1 sysbench --test=fileio --file-total-size=500G prepare |
此命令将创建总共500GB的文件(默认值:128个文件)
为了避免RAM缓存的影响,我们需要将“ –file-total-size ”设置为大于RAM。
2.2 (2)IO基准
sysbench --test=fileio --file-total-size=500G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run |
结果:
reads/s: 16121.01
writes/s: 10747.29
fsyncs/s: 34390.58
Throughput:
read, MiB/s: 251.89
written, MiB/s: 167.93
General statistics:
total time: 300.0049s
total number of events: 18378137
Latency (ms):
min: 0.00
avg: 1.04
max: 22.06
95th percentile: 4.10
sum: 19163038.42
Threads fairness:
events (avg/stddev): 287158.3906/763.93
execution time (avg/stddev): 299.4225/0.01
结果显示,每秒读取16121.01个,每秒10747.29个写入和251.89 MiB / s,写入167.93。
3 4. MySQL OLTP(在线事务处理)基准
3.1 (1)准备表和行
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.1.0.20 --mysql-port=5701 --mysql-user=sbtest --mysql-password='sbtestpwd' --mysql-db=sbtest --db-driver=mysql --tables=3 --table-size=10000000 prepare |
此命令意味着创建3个表,每个表包含1000万行。
可以select count(*) from sbtest1; 确认行数。
3.2 (2)运行基准
/ usr / share / sysbench 目录中有很多LUA脚本,您可以选择一个合适的脚本来获得基准。
脚本有:
bulk_insert.lua
oltp_delete.lua
oltp_insert.lua
oltp_read_only.lua
oltp_read_write.lua
oltp_point_select.lua
oltp_update_index.lua
oltp_update_non_index.lua
oltp_write_only.lua
select_random_points.lua
select_random_ranges.lua
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.1.0.20 --mysql-port=5701 --mysql-user=sbtest --mysql-password='sbtestpwd' --mysql-db=sbtest --db-driver=mysql --tables=3 --table-size=10000000 --report-interval=10 --threads=128 --time=600 run 2>&1 |
线程数:128
每10秒报告一次中间结果
运行时间:600秒
在运行sysbench时,我们可以检查一些状态。看看顶级状态,mysqld进程使用了将近48个CPU内核和14%的内存(约18 GB)。
top status |
内存使用情况我们可以得到如下报告信息(–report-interval = 10:定期以指定的时间间隔(以秒为单位)报告中间统计信息):
您可以获取TPS(18183.90)/ QPS(363684.99),事务总数,查询总数(包括读写),报告中发生了多少错误。您还可以找到延迟指标(95%:10.65 ms)和查询分布。
如果编写很多,则可以根据使用情况增加每个事务的INSERT / UPDATE / DELDETE查询,然后为每个事务设置不同的查询数。例如,
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.1.0.20 --mysql-port=5701 --mysql-user=sbtest --mysql-password='sbtestpwd' --mysql-db=sbtest --db-driver=mysql --tables=3 --table-size=10000000 --delete_inserts=10 --index_updates=10 --non_index_updates=10 --report-interval=10 --threads=128 --time=600 run |
该报告显示,每个事务有更多写入。
通过以下方式获取更多信息:
sysbench /usr/share/sysbench/oltp_read_write.lua help |
然后,我们可以粗略估计该系统和MySQL实例是否足以满足我们的使用需求,它必须比我们的需求好得多,因为在生产环境中查询更加复杂,并且这些查询需要更多的系统资源来执行。