Benchmark

测试环境

机器配置:

  • CPU:Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (24 cores)
  • 内存​:128GB
  • 存储:480G RAID0 SSD *8
  • 网卡:10Gb

集群配置:

  • 节点数:5个replica server节点
  • 测试表的Partition数:64个

测试工具:

  • YCSB (使用Pegasus Java Client)
  • 读写请求的数据分布特征:zipfian,可以理解为遵守80/20原则的数据分布,即80%的访问都集中在20%的内容上。

备注:

  • 运行时长单位:小时。
  • QPS单位:条/秒。
  • 延迟单位:微秒。

性能对比 1.12.2 vs 1.12.3

  • 延迟单位: 微秒
  • pegasu-client: 1.11.10-thrift-0.11.0-inlined-release
  • 客户端节点数: 3
  • 单条数据大小:320B
RW Ratio Ver R-QPS R-AVG-Lat R-P99-Lat W-QPS W-AVG-Lat W-P99-Lat
0:1 1.12.2       40439 739 2995
0:1 1.12.3       41068 728 3439
1:3 1.12.2 16022 309 759 48078 830 3995
1:3 1.12.3 16011 242 686 48036 851 4027
30:1 1.12.2 244392 346 652 8137 731 2995
30:1 1.12.3 279818 295 873 9326 720 3355

V1.11.6 测试结果

multi_get/batch_set

特别注意:测试环境和参数以此为准

  • 测试case:读使用multi_get,写使用batch_set,1QPS的batch_set等于3QPS的set操作
  • 数据大小:单条数据3KB,sort_key数量为3
  • 测试表的Partition数:128个
  • rocksdb_block_cache_capacity = 40G
  • pegasu-client = 1.11.7-thrift-0.11.0-inlined-release
测试Case 读写比 运行时长 Max缓存命中率 读QPS 读Avg延迟 读P99延迟 读P999延迟 写QPS 写Avg延迟 写P99延迟 写P999延迟
3客户端*15线程 ​20:1 1h 10% 150K 263 808 12615 8k 1474 7071 26342
​3客户端*7线程 ​20:1 2h 17% 75K 226 641 5331 4K 1017 4583 14983

v1.11.1 测试结果(20KB)

  • 单条数据大小:20KB
  • 测试时间:2018/11/9

2备份

测试Case 读写比 运行时长 读QPS 读Avg延迟 读P99延迟 写QPS 写Avg延迟 写P99延迟
(1)数据加载: 3客户端*10线程 0:1 0.98 - - - 8439 3557 32223
(2)​读写同时: 3客户端*15线程 ​1:3 0.66 3159 4428 34495 9472 3251 25071
​(3)读写同时: 3客户端*30线程 ​30:1 1.25 64358 1330 13975 2145 1699 6467
(4)数据只读: 6客户端*100线程 1:0​ ​0.91 30491 3274 12167 - - -

3备份

测试Case 读写比 运行时长 读QPS 读Avg延迟 读P99延迟 写QPS 写Avg延迟 写P99延迟
(1)数据加载: 3客户端*10线程 0:1 1.40 - - - 5919 5063 40639
(2)​读写同时: 3客户端*15线程 ​1:3 1.11 1876 6927 44639 5632 5612 76095
​(3)读写同时: 3客户端*30线程 ​30:1 1.63 49341 1751 21615 1644 1935 11159
(4)数据只读: 6客户端*100线程 1:0​ ​0.91 25456 3923 15679 - - -

v1.11.1 测试结果(10KB)

  • 单条数据大小:10KB
  • 测试时间:2018/11/5

2备份

测试Case 读写比 运行时长 读QPS 读Avg延迟 读P99延迟 写QPS 写Avg延迟 写P99延迟
(1)数据加载: 3客户端*10线程 0:1 0.78 - - - 14181 2110 15468
(2)​读写同时: 3客户端*15线程 ​1:3 0.52 4024 5209 41247 12069 1780 14495
​(3)读写同时: 3客户端*30线程 ​30:1 0.76 105841 816 9613 3527 1107 4155
(4)数据只读: 6客户端*100线程 1:0​ ​​1.04 162150 1868 6733 - - -

3备份

测试Case 读写比 运行时长 读QPS 读Avg延迟 读P99延迟 写QPS 写Avg延迟 写P99延迟
(1)数据加载: 3客户端*10线程 0:1 1.16 - - - 9603 3115 20468
(2)​读写同时: 3客户端*15线程 ​1:3 0.69 3043 5657 38783 9126 3140 27956
​(3)读写同时: 3客户端*30线程 ​30:1 0.89 90135 937 13324 3002 1185 4816
(4)数据只读: 6客户端*100线程 1:0​ 1.08 154869 1945 7757 - - -

RocsDB配置:

    rocksdb_abnormal_get_time_threshold_ns = 10000000
    rocksdb_abnormal_get_size_threshold = 1000000
    rocksdb_abnormal_multi_get_time_threshold_ns = 100000000
    rocksdb_abnormal_multi_get_size_threshold = 10000000
    rocksdb_abnormal_multi_get_iterate_count_threshold = 1000

    rocksdb_write_buffer_size = 67108864
    rocksdb_max_write_buffer_number = 6
    rocksdb_max_background_flushes = 4
    rocksdb_max_background_compactions = 12
    rocksdb_num_levels = 6
    rocksdb_target_file_size_base = 67108864
    rocksdb_target_file_size_multiplier = 1
    rocksdb_max_bytes_for_level_base = 671088640
    rocksdb_max_bytes_for_level_multiplier = 10
    rocksdb_level0_file_num_compaction_trigger = 4
    rocksdb_level0_slowdown_writes_trigger = 30
    rocksdb_level0_stop_writes_trigger = 60
    rocksdb_disable_table_block_cache = false
    rocksdb_compression_type = snappy none

v1.10.0 测试结果

  • 单条数据大小:320字节
  • 测试时间:2018/07/27
测试Case 读写比 运行时长 读QPS 读Avg延迟 读P99延迟 写QPS 写Avg延迟 写P99延迟
(1)数据加载: 3客户端*10线程 0:1 1.89 - - - 44039 679 3346
(2)​读写同时: 3客户端*15线程 ​1:3 1.24 16690 311 892 50076 791 4396
​(3)读写同时: 3客户端*30线程 ​30:1 1.04 311633 264 511 10388 619 2468
(4)数据只读: 6客户端*100线程 1:0​ ​0.17 ​978884 623 ​1671 - - -
(5)数据只读: 12客户端*100线程 1:0​ ​0.28 ​1194394 1003 ​2933 - - -