当前位置:Gxlcms > 数据库问题 > sysbench对数据库进行压力测试

sysbench对数据库进行压力测试

时间:2021-07-01 10:21:17 帮助过:24人阅读


sysbench支持三种测试方案:

1、使用自带的测试模块,如对cpu,I/O,memory等的测试。

2、使用自带的lua脚本进行测试,如果使用快速安装的方式,默认的脚本路径为:/usr/share/sysbench

3、使用自定义的lua脚本。


获取帮助信息:

如果对相关模块或者脚本的参数不明确的,可以使用 sysbench  testname help来查看,testname含模块名称和脚本名称。


sysbench经典测试命令:

  • prepare: 创建测试数据或者相关的测试文件,为测试做准备工作。如数据库的测试数据准备等。

  • run: 开始执行测试。

  • cleanup: 移除测试数据

  • help: 帮助命令


测试CPU性能

  1. sysbench cpu --cpu-max-prime=10000 run
  2. #显示测试结果
  3. General statistics:
  4.     total time:                          10.0003s
  5.     total number of events:              8692
  6. Latency (ms):
  7.          min:                                  1.12
  8.          avg:                                  1.15
  9.          max:                                  2.98
  10.          95th percentile:                      1.25
  11.          sum:                               9996.64
  12. Threads fairness:
  13.     events (avg/stddev):           8692.0000/0.00
  14.     execution time (avg/stddev):   9.9966/0.00


I/O测试

准备测试数据:

  1. sysbench fileio --file-total-size=40G prepare

运行顺序写入测试:

  1. sysbench fileio --file-total-size=40G --file-test-mode=seqwr run
  2. #测试结果
  3. File operations:
  4.     reads/s:                      0.00
  5.     writes/s:                     3916.87
  6.     fsyncs/s:                     5001.01
  7. Throughput:
  8.     read, MiB/s:                  0.00
  9.     written, MiB/s:               61.20
  10. General statistics:
  11.     total time:                          10.0055s
  12.     total number of events:              89250
  13. Latency (ms):
  14.          min:                                  0.01
  15.          avg:                                  0.11
  16.          max:                                 28.02
  17.          95th percentile:                      0.12
  18.          sum:                               9937.24
  19. Threads fairness:
  20.     events (avg/stddev):           89250.0000/0.00
  21.     execution time (avg/stddev):   9.9372/0.00

运行顺序重写测试:

  1. sysbench fileio --file-total-size=40G --file-test-mode=seqrewr run
  2. #测试结果:
  3. File operations:
  4.     reads/s:                      0.00
  5.     writes/s:                     4018.65
  6.     fsyncs/s:                     5131.38
  7. Throughput:
  8.     read, MiB/s:                  0.00
  9.     written, MiB/s:               62.79
  10. General statistics:
  11.     total time:                          10.0003s
  12.     total number of events:              91531
  13. Latency (ms):
  14.          min:                                  0.00
  15.          avg:                                  0.11
  16.          max:                                 31.45
  17.          95th percentile:                      0.10
  18.          sum:                               9933.80
  19. Threads fairness:
  20.     events (avg/stddev):           91531.0000/0.00
  21.     execution time (avg/stddev):   9.9338/0.00

混合随机读/写:(如果执行出错,需要重新prepare数据)

  1. sysbench fileio --file-total-size=40G --file-test-mode=rndrw  --max-time=100 --max-requests=0 run
  2. #测试结果:
  3. File operations:
  4.     reads/s:                      338.98
  5.     writes/s:                     225.99
  6.     fsyncs/s:                     722.23
  7. Throughput:
  8.     read, MiB/s:                  5.30
  9.     written, MiB/s:               3.53
  10. General statistics:
  11.     total time:                          100.0007s
  12.     total number of events:              128727
  13. Latency (ms):
  14.          min:                                  0.00
  15.          avg:                                  0.78
  16.          max:                                 43.01
  17.          95th percentile:                      2.97
  18.          sum:                              99785.92
  19. Threads fairness:
  20.     events (avg/stddev):           128727.0000/0.00
  21.     execution time (avg/stddev):   99.7859/0.00


清除测试数据:

  1. sysbench fileio --file-total-size=40G cleanup


OLTP基准测试

OLTP基准测试模拟了一个简单的事务处理系统的工作负载。若要对数据库性能进行测试就要使用OLTP相关的脚本。

在/usr/share/sysbench/目录下有相关的lua脚本:

  1. bulk_insert.lua
  2. oltp_common.lua
  3. oltp_delete.lua
  4. oltp_insert.lua
  5. oltp_point_select.lua
  6. oltp_read_only.lua
  7. oltp_read_write.lua
  8. oltp_update_index.lua
  9. oltp_update_non_index.lua
  10. oltp_write_only.lua
  11. select_random_points.lua
  12. select_random_ranges.lua

对于未知的测试参数,可以通过 sysbench  scripts-name help 来查看。


创建测试数据:

  1. sysbench oltp_common  --table-size=1000000 --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=123456  prepare
  2. Creating table ‘sbtest1‘...
  3. Inserting 1000000 records into ‘sbtest1‘
  4. Creating a secondary index on ‘sbtest1‘...

执行run命令进行测试:(只读)

  1. sysbench oltp_read_only  --table-size=1000000 --db-driver=mysql  --mysql-db=test --mysql-user=root --mysql-password=123456 --time=60  --max-requests=0 --threads=8 run
  2. #测试结果
  3.  
  4. Running the test with following options:
  5. Number of threads: 8
  6. Initializing random number generator from current time
  7. Initializing worker threads...
  8. Threads started!
  9. SQL statistics:
  10.     queries performed:
  11.         read:                            1679174
  12.         write:                           0
  13.         other:                           239882
  14.         total:                           1919056
  15.     transactions:                        119941 (1998.81 per sec.)
  16.     queries:                             1919056 (31980.95 per sec.)
  17.     ignored errors:                      0      (0.00 per sec.)
  18.     reconnects:                          0      (0.00 per sec.)
  19. General statistics:
  20.     total time:                          60.0047s
  21.     total number of events:              119941
  22. Latency (ms):
  23.          min:                                  0.32
  24.          avg:                                  4.00
  25.          max:                                 56.17
  26.          95th percentile:                      8.13
  27.          sum:                             479830.78
  28. Threads fairness:
  29.     events (avg/stddev):           14992.6250/116.75
  30.     execution time (avg/stddev):   59.9788/0.00

除了使用read_only测试,我们还可以测试数据库的写性能:

  1. sysbench oltp_write_only  --table-size=1000000 --db-driver=mysql  --mysql-db=test --mysql-user=root --mysql-password=123456 --time=60  --max-requests=0 --threads=8 run
  2. #测试结果
  3. SQL statistics:
  4.     queries performed:
  5.         read:                            0
  6.         write:                           83764
  7.         other:                           41882
  8.         total:                           125646
  9.     transactions:                        20941  (348.93 per sec.)
  10.     queries:                             125646 (2093.56 per sec.)
  11.     ignored errors:                      0      (0.00 per sec.)
  12.     reconnects:                          0      (0.00 per sec.)
  13. General statistics:
  14.     total time:                          60.0120s
  15.     total number of events:              20941
  16. Latency (ms):
  17.          min:                                  4.92
  18.          avg:                                 22.92
  19.          max:                               5518.27
  20.          95th percentile:                     69.29
  21.          sum:                             479968.99
  22. Threads fairness:
  23.     events (avg/stddev):           2617.6250/17.87
  24.     execution time (avg/stddev):   59.9961/0.00

上面的结果中包含了很多的信息,其中重点需要我们关注的信息是:

1、总的事务数 (total number of events)

2、每秒事务数

3、时间统计信息(最小,平均,最大响应时间,以及95%百分比响应时间)

4、线程公平性统计信息,表示负载的公平性。(thread-fairness)


清理测试数据:

  1. sysbench oltp_read_only  --table-size=1000000 --db-driver=mysql  --mysql-db=test --mysql-user=root --mysql-password=123456 cleanup







本文出自 “Trying” 博客,请务必保留此出处http://tryingstuff.blog.51cto.com/4603492/1916649

sysbench对数据库进行压力测试

标签:压力测试   sysbench   

人气教程排行