sysbench压测msyql

yum -y install sysbench sysbench --version    #sysbench 1.0.9

我们还可以在Github(https://github.com/akopytov/sysbench)上下载sysbench软件包,其中的  README.md显示了如何安装和使用它

为了避免RAM破坏基准测试结果,我们应该创建大于RAM大小的文件。因此,我在数据目录中创建了150GB的文件:

cd /data1 sysbench --test=fileio --file-total-size=500G prepare

此命令将创建总共500GB的文件(默认值:128个文件)

为了避免RAM缓存的影响,我们需要将“ –file-total-size ”设置为大于RAM。

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。

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; 确认行数。

/ 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:定期以指定的时间间隔(以秒为单位报告中间统计信息):

https://wd-jishu.oss-cn-hangzhou.aliyuncs.com/wd/2019/11/image-2.png@!full

您可以获取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

该报告显示,每个事务有更多写入。

https://wd-jishu.oss-cn-hangzhou.aliyuncs.com/wd/2019/11/image-3.png@!full

通过以下方式获取更多信息:

sysbench /usr/share/sysbench/oltp_read_write.lua help

然后,我们可以粗略估计该系统和MySQL实例是否足以满足我们的使用需求,它必须比我们的需求好得多,因为在生产环境中查询更加复杂,并且这些查询需要更多的系统资源来执行。

随机文章