Sysbench ShardingSphere Proxy 空 Rules 性能测试

    1. sysbench 直接压测 MySQL 性能
    2. sysbench 压测 ShardingSphere-Proxy(底层透传 MySQL)
    1. DB 相关配置:推荐内存大于压测的数据量,使得数据均在内存热块中,其余可自行调整;
    2. ShardingSphere-Proxy 相关配置:推荐使用高性能多核 CPU,其余可自行调整;
    3. 压测涉及服务器均关闭 swap 分区。

    数据库

    ShardingSphere-Proxy

    bin/start.sh

    config.yaml

    1. sysbench oltp_read_write --mysql-host=${DB_IP} --mysql-port=${DB_PORT} --mysql-user=${USER} --mysql-password=${PASSWD} --mysql-db=test --tables=10 --table-size=1000000 --report-interval=10 --time=100 --threads=200 prepare

    压测命令

    1. sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
    2. Running the test with following options:
    3. Number of threads: 200
    4. Report intermediate results every 10 second(s)
    5. Initializing random number generator from current time
    6. Initializing worker threads...
    7. Threads started!
    8. # 每 10 秒钟报告一次测试结果,tps、每秒读、每秒写、95% 以上的响应时长统计
    9. [ 10s ] thds: 200 tps: 11161.70 qps: 223453.06 (r/w/o: 156451.76/44658.51/22342.80) lat (ms,95%): 27.17 err/s: 0.00 reconn/s: 0.00
    10. ...
    11. SQL statistics:
    12. queries performed:
    13. read: 19560590 # 读总数
    14. write: 5588740 # 写总数
    15. other: 27943700 # 其他操作总数 (COMMIT 等)
    16. total: 27943700 # 全部总数
    17. transactions: 1397185 (11638.59 per sec.) # 总事务数 ( 每秒事务数 )
    18. ignored errors: 0 (0.00 per sec.) # 忽略错误数 ( 每秒忽略错误数 )
    19. reconnects: 0 (0.00 per sec.) # 重连次数 ( 每秒重连次数 )
    20. General statistics:
    21. total number of events: 1397185 # 总共发生多少事务数
    22. Latency (ms):
    23. min: 5.37 # 最小延时
    24. avg: 17.13 # 平均延时
    25. max: 109.75 # 最大延时
    26. 95th percentile: 24.83 # 超过 95% 平均耗时
    27. sum: 23999546.19
    28. Threads fairness:
    29. events (avg/stddev): 6985.9250/34.74 # 平均每线程完成 6985.9250 次 event,标准差为 34.74
    30. execution time (avg/stddev): 119.9977/0.01 # 每个线程平均耗时 119.9977 秒,标准差为 0.01

    压测过程中值得关注的点

    1. ShardingSphere-Proxy 所在服务器 CPU 利用率,充分利用 CPU 为佳;
    2. DB 所在服务器磁盘 IO,物理读越低越好;