查看原文
其他

RocksDB 7 终于解决了 Compaction 时性能下降问题

The following article is from Apache Kvrocks Author Apache Kvrocks

RocksDB  7.5.3  Compaction Kvrocks  @zhaoxiaobiao  Compaction 

Kvrocks 的社区用户 Juan Crescente 在 RocksDB 社区的 Google Group 里发起了一个讨论: Performance of compactions (kvrocks)[1],主要的意思是 RocksDB 在大批量持续导入数据场景下 Write Stall 会导致服务不可用:

RocksDB  Mark  7.5.3  Compaction  Write Stall :

Kvrocks  @zhaoxiaobiao[2]  RocksDB 7.7.3  Compaction  QPS  RocksDB 6.29.5  Compaction  QPS  0

带来这个优化的主要原因是 RocksDB 7.5.3 修复了一个 Compaction Pending Bytes 计算放大的问题,具体见: rocksdb #issue 9423[6] 

使 RocksDB 6.29.5/7.7.3  Kvrocks

 VM - A  VM - B 

  • CPU: 4 
  • : 32 GiB
  • : 890G NVME SSD

 VM - C  4 CPU / 8GiB 使 memtier_benchmark  Kvrocks 

:

docker run -d --rm redislabs/memtier_benchmark:latest  -t 2 -c 20 -s 172.27.255.231 -p 6666 --distinct-client-seed  --key-minimum=100000000 --key-maximum=10000000000 --random-data  --data-size=10000 -n 10000000000 --command <span data-raw-text="" "="" data-textnode-index-1667281312502="36" data-index-1667281312502="1048" data-textnode-notemoji-index-1667281312502="1048" class="character">"set __key__ __data__<span data-raw-text="" "="" data-textnode-index-1667281312502="36" data-index-1667281312502="1069" data-textnode-notemoji-index-1667281312502="1069" class="character">"

 memtier_benchmark  -c -t  Kvrocks  Compact  (使 Kvrocks Compact Cron)

以下是来自 @zhaoxiaobiao 的测试数据,对比图统一使用绿色线表示 RocksDB 6.x (6.29.5) ,使用黄色表示新版本 RocksDB 7.x (7.7.3)。但由于篇幅有限,下面展示对照组中的差异指标:

CPU 

 CPU Compaction  RocksDB 6.x  6.x  Compaction  CPU  7.x 7.x  Compaction  CPU  6.x  40% 

OPS 

 OPS  RocksDB 6.x  OPS  CPU Compaction  0 7.x 

RocksDB 6.x  Compaction  RocksDB 7.x 

 7.x  RocksDB 6.x 

Compaction 

RocksDB 7.x  RocksDB 6.x Compaction   RocksDB 7.x  Compaction 

 Estimate Keys  DB 

 RocksDB 7.X  Compact  6.x 

RocksDB 7.x  Compaction :

  • RocksDB  Compaction Pending Bytes  Write Stall : rocksdb #issue 9423[6] 
  •  Compaction  Compaction 

 @aleksraiden[3]  Kvrocks   RocksDB  7.x : Change RocksDB to 7.х?[4] RocksDB 7.x  Kvrocks  @zhaoxiaobiao  PR #1056[5]

参考资料

[1]

Performance of compactions (kvrocks): https://groups.google.com/g/rocksdb/c/umRPboha0as/m/5VP6zvwiCgAJ?utm_medium=email&utm_source=footer

[2]

@zhaoxiaobiao: https://github.com/xiaobiaozhao

[3]

aleksraiden: https://github.com/aleksraiden

[4]

Change RocksDB to 7.х?: https://github.com/apache/incubator-kvrocks/discussions/1013

[5]

PR #1056: https://github.com/apache/incubator-kvrocks/pull/1056

 [6]          rocksdb #issue 9423: https://github.com/facebook/rocksdb/issues/9423

参考阅读:


本文由高可用架构转载。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。

       

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存