This is an automated email from the ASF dual-hosted git repository.
wangdan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pegasus-website.git
The following commit(s) were added to refs/heads/master by this push:
new 6d64eff0 Update benchmark Chinese docs (#49)
6d64eff0 is described below
commit 6d64eff053d29a6869f2c21de95cd1258f9c91bb
Author: Yingchun Lai <[email protected]>
AuthorDate: Thu Dec 21 20:18:43 2023 +0800
Update benchmark Chinese docs (#49)
---
_overview/zh/benchmark.md | 323 ++++++++++++++++++++++++++--------------------
1 file changed, 182 insertions(+), 141 deletions(-)
diff --git a/_overview/zh/benchmark.md b/_overview/zh/benchmark.md
index d3c3aa75..22c9a1b5 100755
--- a/_overview/zh/benchmark.md
+++ b/_overview/zh/benchmark.md
@@ -2,182 +2,216 @@
permalink: /overview/benchmark/
---
-## 测试环境
+## 测试工具及配置
-**机器配置:**
+* 使用[YCSB](https://github.com/xiaomi/pegasus-ycsb)中的Pegasus Java Client进行测试
+* 读写请求的数据分布特征:zipfian,可以理解为遵守80/20原则的数据分布,即80%的访问都集中在20%的内容上
-* CPU:Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz (24 cores)
-* 内存:128GB
-* 存储:480G RAID0 SSD *8
-* 网卡:10Gb
+### 测试结果说明
+- Case:分为只读测试`Read`、只写测试`Write`、读写混合测试`Read & Write`
+- threads:写为 `a * b`
的形式,其中`a`表示client的实例数,即YCSB是运行在几个节点上的。`b`表示线程数,即YCSB中的`threadcount`配置项的值
+- RW
Ratio:读写操作比,即YCSB配置中的`readproportion`与`updateproportion`或`insertproportion`的比值
+- duration:测试总时长,单位小时
+- R-QPS:每秒读操作数
+- R-AVG-Lat,R-P99-Lat,R-P999-Lat:读操作的平均,P99,P999延迟,单位微秒
+- W-QPS:每秒写操作数
+- W-AVG-Lat,W-P99-Lat,W-P999-Lat:写操作的平均,P99,P999延迟,单位微秒
-**集群配置:**
+## 各版本的性能测试
-* 节点数:5个replica server节点
-* 测试表的Partition数:64个
+### 2.4.0
-**测试工具:**
+#### 测试环境
-* [YCSB](https://github.com/xiaomi/pegasus-ycsb) (使用Pegasus Java Client)
-* 读写请求的数据分布特征:zipfian,可以理解为遵守80/20原则的数据分布,即80%的访问都集中在20%的内容上。
+##### 硬件配置
-**备注:**
+* CPU:Intel® Xeon® Silver 4210 * 2 2.20 GHz / 3.20 GHz
+* 内存:128 GB
+* 磁盘:SSD 480 GB * 8
+* 网卡:带宽 10Gb
-* 运行时长单位:小时。
-* QPS单位:条/秒。
-* 延迟单位:微秒。
+##### 集群规模
-## 测试结果
+* replica server节点数:5
+* 测试表的Partition数:64
+
+#### 测试结果
+
+- 单条数据大小:1KB
+
+| Case | threads | Read/Write | R-QPS | R-AVG-Lat | R-P99-Lat |
W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|---------|-----------|-----------|--------|-----------|-----------|
+| Write | 3 * 15 | 0:1 | - | - | - |
56,953 | 787 | 1,786 |
+| Read | 3 * 50 | 1:0 | 360,642 | 413 | 984 | -
| - | - |
+| Read & Write | 3 * 30 | 1:1 | 62,572 | 464 | 5,274 |
62,561 | 985 | 3,764 |
+| Read & Write | 3 * 15 | 1:3 | 16,844 | 372 | 3,980 |
50,527 | 762 | 1,551 |
+| Read & Write | 3 * 15 | 1:30 | 1,861 | 381 | 3,557 |
55,816 | 790 | 1,688 |
+| Read & Write | 3 * 30 | 3:1 | 140,484 | 351 | 3,277 |
46,822 | 856 | 2,044 |
+| Read & Write | 3 * 50 | 30:1 | 336,106 | 419 | 1,221 |
11,203 | 763 | 1,276 |
+
+### 2.3.0
+
+#### 测试环境
+
+同2.4.0
+
+#### 测试结果
+
+| Case | threads | Read/Write | R-QPS | R-AVG-Lat | R-P99-Lat |
W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|---------|-----------|-----------|--------|-----------|-----------|
+| Write | 3 * 15 | 0:1 | - | - | - |
42,386 | 1,060 | 6,628 |
+| Read | 3 * 50 | 1:0 | 331,623 | 585 | 2,611 | -
| - | - |
+| Read & Write | 3 * 30 | 1:1 | 38,766 | 1,067 | 15,521 |
38,774 | 1,246 | 7,791 |
+| Read & Write | 3 * 15 | 1:3 | 13,140 | 819 | 11,460 |
39,428 | 863 | 4,884 |
+| Read & Write | 3 * 15 | 1:30 | 1,552 | 937 | 9,524 |
46,570 | 930 | 5,315 |
+| Read & Write | 3 * 30 | 3:1 | 93,746 | 623 | 6,389 |
31,246 | 996 | 5,543 |
+| Read & Write | 3 * 50 | 30:1 | 254,534 | 560 | 2,627 |
8,481 | 901 | 3,269 |
### 1.12.3
-* 延迟单位: 微秒
-* pegasu-client: 1.11.10-thrift-0.11.0-inlined-release
-* 客户端节点数: 3
-
-#### 单条数据大小:320B
+#### 测试环境
+
+##### 硬件配置
+
+* CPU:Intel® Xeon® CPU E5-2620 v3 @ 2.40 GHz
+* 内存:128 GB
+* 磁盘:SSD 480 GB * 8
+* 网卡:带宽 10 Gb
+
+其他测试环境同2.4.0
+
+#### 测试结果
-| 测试case | RW Ratio | R-QPS | R-AVG-Lat | R-P99-Lat | W-QPS | W-AVG-Lat |
W-P99-Lat |
-| --------------------- | -------- | ------ | --------- | --------- | ----- |
--------- | --------- |
-| 读写同时: 3客户端*15线程 | 0:1 | | | | 41068 | 728
| 3439 |
-| 读写同时: 3客户端*15线程 | 1:3 | 16011 | 242 | 686 | 48036 | 851
| 4027 |
-| 读写同时: 3客户端*30线程 | 30:1 | 279818 | 295 | 873 | 9326 | 720
| 3355 |
+- 单条数据大小:320B
-#### 单条数据大小:1KB
+| Case | threads | Read/Write | R-QPS | R-AVG-Lat | R-P99-Lat |
W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|---------|-----------|-----------|--------|-----------|-----------|
+| Read & Write | 3 * 15 | 0:1 | - | - | - |
41,068 | 728 | 3,439 |
+| Read & Write | 3 * 15 | 1:3 | 16,011 | 242 | 686 |
48,036 | 851 | 4,027 |
+| Read & Write | 3 * 30 | 30:1 | 279,818 | 295 | 873 |
9,326 | 720 | 3,355 |
-| 测试case | RW Ratio | R-QPS | R-AVG-Lat | R-P99-Lat | W-QPS | W-AVG-Lat |
W-P99-Lat |
-| --------------------- | -------- | ------ | ------ | --------- | --------- |
----- | --------- | --------- |
-| 读写同时: 3客户端*15线程 | 0:1 | | | | 40732 | 1102
| 4216 |
-| 读写同时: 3客户端*15线程 | 1:3 | 14355 | 476 | 2855 | 38547 | 1016
| 4135 |
-| 读写同时: 3客户端*20线程 | 3:1 | 87480 | 368 | 4170 | 29159 | 940
| 4170 |
-| 读写同时: 3客户端*50线程 | 1:0 | 312244 | 479 | 1178 | |
| |
+- 单条数据大小:1KB
+
+| Case | threads | Read/Write | R-QPS | R-AVG-Lat | R-P99-Lat |
W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|---------|-----------|-----------|--------|-----------|-----------|
+| Read & Write | 3 * 15 | 0:1 | - | - | - |
40,732 | 1,102 | 4,216 |
+| Read & Write | 3 * 15 | 1:3 | 14,355 | 476 | 2,855 |
38,547 | 1,016 | 4,135 |
+| Read & Write | 3 * 20 | 3:1 | 87,480 | 368 | 4,170 |
29,159 | 940 | 4,170 |
+| Read & Write | 3 * 50 | 1:0 | 312,244 | 479 | 1,178 | -
| - | - |
### 1.12.2
-* 延迟单位: 微秒
-* pegasu-client: 1.11.10-thrift-0.11.0-inlined-release
-* 客户端节点数: 3
-* 单条数据大小:320B
+#### 测试环境
-| 测试case | RW Ratio | R-QPS | R-AVG-Lat | R-P99-Lat | W-QPS | W-AVG-Lat |
W-P99-Lat |
-| --------------------- | -------- | ------ | ------ | --------- | --------- |
----- | --------- | --------- |
-| 读写同时: 3客户端*15线程 | 0:1 | | | | 40439 | 739
| 2995 |
-| 读写同时: 3客户端*15线程 | 1:3 | 16022 | 309 | 759 | 48078 | 830
| 3995 |
-| 读写同时: 3客户端*30线程 | 30:1 | 244392 | 346 | 652 | 8137 | 731
| 2995 |
+测试环境同 1.12.3
-### 1.11.6(multi_get/batch_set)
+#### 测试结果
-特别注意:测试环境和参数以此为准
+- 单条数据大小:320B
-* 测试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 | threads | Read/Write | R-QPS | R-AVG-Lat | R-P99-Lat |
W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|---------|-----------|-----------|--------|-----------|-----------|
+| Read & Write | 3 * 15 | 0:1 | - | - | - |
40,439 | 739 | 2,995 |
+| Read & Write | 3 * 15 | 1:3 | 16,022 | 309 | 759 |
48,078 | 830 | 3,995 |
+| Read & Write | 3 * 30 | 30:1 | 244,392 | 346 | 652 |
8,137 | 731 | 2,995 |
-| 测试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 |
+### 1.11.6
-### 1.11.1
+#### 测试环境
-#### 单条数据大小:20KB
+- 测试接口:multi_get() 和 batch_set()
+- 一个hashkey下包含3条sortkey数据
+- 单次batch_set()调用设置3个hashkey
+- 单条数据大小:3KB
+- 测试表的Partition数:128
+- rocksdb_block_cache_capacity = 40G
+- 其他测试环境同 1.12.3
-测试时间:2018/11/9
+#### 测试结果
-##### 2备份
+| Case | threads | Read/Write | duration | Max cache hit rate | R-QPS
| R-AVG-Lat | R-P99-Lat | R-P999-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
W-P999-Lat |
+|--------------|---------|------------|----------|--------------------|-------|-----------|-----------|------------|-------|-----------|-----------|------------|
+| Read & Write | 3 * 15 | 20:1 | 1 | 10% | 150K
| 263 | 808 | 12,615 | 8k | 1,474 | 7,071 | 26,342
|
+| Read & Write | 3 * 7 | 20:1 | 2 | 17% | 75K
| 226 | 641 | 5,331 | 4K | 1,017 | 4,583 | 14,983
|
-| 测试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 | -
| - | - |
+### 1.11.1
-##### 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 | -
| - | - |
+测试环境同 1.12.3
+#### 测试结果
-#### 单条数据大小:10KB
+- 单条数据大小:20KB * 2备份
-测试时间:2018/11/5
+| Case | threads | Read/Write | duration | R-QPS | R-AVG-Lat |
R-P99-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|----------|--------|-----------|-----------|-------|-----------|-----------|
+| Write | 3 * 10 | 0:1 | 0.98 | - | - | -
| 8,439 | 3,557 | 32,223 |
+| Read & Write | 3 * 15 | 1:3 | 0.66 | 3,159 | 4,428 | 34,495
| 9,472 | 3,251 | 25,071 |
+| Read & Write | 3 * 30 | 30:1 | 1.25 | 64,358 | 1,330 | 13,975
| 2,145 | 1,699 | 6,467 |
+| Read | 6 * 100 | 1:0 | 0.91 | 30,491 | 3,274 | 12,167
| - | - | - |
-##### 2备份
+- 单条数据大小:20KB * 3备份
-| 测试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 | -
| - | - |
+| Case | threads | Read/Write | duration | R-QPS | R-AVG-Lat |
R-P99-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|----------|--------|-----------|-----------|-------|-----------|-----------|
+| Write | 3 * 10 | 0:1 | 1.40 | - | - | -
| 5,919 | 5,063 | 40,639 |
+| Read & Write | 3 * 15 | 1:3 | 1.11 | 1,876 | 6,927 | 44,639
| 5,632 | 5,612 | 76,095 |
+| Read & Write | 3 * 30 | 30:1 | 1.63 | 49,341 | 1,751 | 21,615
| 1,644 | 1,935 | 11,159 |
+| Read | 6 * 100 | 1:0 | 0.91 | 25,456 | 3,923 | 15,679
| - | - | - |
-##### 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 | -
| - | - |
+- 单条数据大小:10KB * 2备份
-**RocsDB配置:**
+| Case | threads | Read/Write | duration | R-QPS | R-AVG-Lat |
R-P99-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|----------|---------|-----------|-----------|--------|-----------|-----------|
+| Write | 3 * 10 | 0:1 | 0.78 | - | - | -
| 14,181 | 2,110 | 15,468 |
+| Read & Write | 3 * 15 | 1:3 | 0.52 | 4,024 | 5,209 | 41247
| 12,069 | 1,780 | 14,495 |
+| Read & Write | 3 * 30 | 30:1 | 0.76 | 105,841 | 816 | 9613
| 3,527 | 1,107 | 4,155 |
+| Read | 6 * 100 | 1:0 | 1.04 | 162,150 | 1,868 | 6733
| - | - | - |
-``` ini
- 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
+- 单条数据大小:10KB * 3备份
- 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
-```
+| Case | threads | Read/Write | duration | R-QPS | R-AVG-Lat |
R-P99-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|---------|------------|----------|---------|-----------|-----------|-------|-----------|-----------|
+| Write | 3 * 10 | 0:1 | 1.16 | - | - | -
| 9,603 | 3,115 | 20,468 |
+| Read & Write | 3 * 15 | 1:3 | 0.69 | 3,043 | 5,657 |
38,783 | 9,126 | 3,140 | 27,956 |
+| Read & Write | 3 * 30 | 30:1 | 0.89 | 90,135 | 937 |
13,324 | 3,002 | 1,185 | 4,816 |
+| Read | 6 * 100 | 1:0 | 1.08 | 154,869 | 1,945 | 7,757
| - | - | - |
### 1.11.0
-* 单条数据大小:320字节
-* 测试时间:2018/07/27
+#### 测试环境
+
+测试环境同 1.12.3
+
+#### 测试结果
+
+- 单条数据大小:320B
-| 测试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
| - | - | - |
+| Case | threads | Read/Write | duration | R-QPS | R-AVG-Lat |
R-P99-Lat | W-QPS | W-AVG-Lat | W-P99-Lat |
+|--------------|----------|------------|----------|-----------|-----------|-----------|--------|-----------|-----------|
+| Write | 3 * 10 | 0:1 | 1.89 | - | - | -
| 44,039 | 679 | 3,346 |
+| Read & Write | 3 * 15 | 1:3 | 1.24 | 16,690 | 311 |
892 | 50,076 | 791 | 4,396 |
+| Read & Write | 3 * 30 | 30:1 | 1.04 | 311,633 | 264 |
511 | 10,388 | 619 | 2,468 |
+| Read | 6 * 100 | 1:0 | 0.17 | 978,884 | 623 |
1,671 | - | - | - |
+| Read | 12 * 100 | 1:0 | 0.28 | 1,194,394 | 1,003 |
2,933 | - | - | - |
-## 不同参数下的性能
+## 不同场景下的性能测试
如无特殊说明:
-* 延迟单位:微妙
+* 测试环境同 1.12.3
* 单条数据大小:1KB
-* 客户端节点数:3,版本号:1.11.10-thrift-0.11.0-inlined-release
-* 服务端节点数:5,版本号:1.12.3,表分片数:64,开启rocksdb限速:max_rate=500MB, auto_tune=true
+* 客户端:节点数:3,版本号:1.11.10-thrift-0.11.0-inlined-release
+* 服务端:节点数:5,版本号:1.12.3,表分片数:64,开启rocksdb限速:max_rate=500MB, auto_tune=true
-### 客户端线程数
+### 不同的客户端线程数
-该项测试旨在观察在默认配置下(注意:未开启RocksDB限速),不同线程(仅读和仅写)对QPS和延迟的影响。
+该项测试旨在对比在默认配置下,不同线程(仅读和仅写)对QPS和延迟的影响。
+
+> 注意:未开启RocksDB限速

@@ -185,56 +219,63 @@ permalink: /overview/benchmark/
由上图可以看到,在该测试场景下,写最大QPS≈43K,读最大QPS≈370K,你也可以根据QPS的大小合理估算对应的延迟。
-### RocksDB限速
+### 是否开启RocksDB限速
+
+> 测试场景为:测试`threads`配置为:3 * 20,QPS大约为44K
-Pegasus底层采用RocksDB做存储引擎,当数据写入增多,会触发compaction操作,占用较多磁盘IO,出现较多的毛刺现象。该项测试展示了开启[RocksDB的限速](http://10.232.52.164:4000/overview/benchmark)后,可以降低compaction负载,从而显著的降低毛刺现象。
+Pegasus底层采用RocksDB做存储引擎,当数据写入增多,会触发更多的compaction操作,占用更多的磁盘IO,出现更多的毛刺现象。该项测试展示了开启RocksDB的限速后,可以降低compaction负载,从而显著的降低毛刺现象。
-下图分别展示了无限速、500MB限速、500MB限速同时开启auto-tune功能,三种场景的IO使用率和写P99延迟(注意:测试场景为:3client*20thread,QPS≈44K):
+下图分别展示了无限速、500MB/s限速、500MB/s限速同时开启auto-tune功能,三种场景的IO使用率和写P99延迟情况:
-磁盘IO占用:
+- 磁盘IO占用:



-P99延迟:
+- P99延迟:



-可以发现,磁盘IO使用率被降低,相应的写延迟的毛刺现象也被大大缓解。
+可以发现,磁盘IO使用率得到降低,相应的写延迟的毛刺现象也被大大缓解。
我们从YCSB的测试结果:

也可以看到:
-* 开启限速、开启限速并开启auto-tune后,QPS吞吐分别约提升了5%,20%
+* 开启限速,开启限速并开启auto-tune后,QPS吞吐分别约提升了5%,20%
* 开启限速后,仅对极端情况下的延迟(P999/P9999)有显著改善作用,对于大部分请求来说,改善并不明显
但是**需要注意**的是:
-auto-tune功能在单条数据较大的场景下可能会引发[write
stall](https://github.com/facebook/rocksdb/wiki/Write-Stalls)(在我们的测试中,当单条value=10KB,QPS=10K时,发生write
stall,关闭Auto-Tune后不会产生write stall),所以请合理评估是否开启auto-tune
+auto-tune功能在单条数据较大的场景下可能会引发[write
stall](https://github.com/facebook/rocksdb/wiki/Write-Stalls),请合理评估是否开启auto-tune。
+
+### 不同的replica server数量
+
+该项测试旨在观察,不同机器数量对读写性能的影响。
+
+> 测试场景为:测试`Case`为只读和只写
-### 服务端机器数
-该项测试旨在观察,不同机器数量对读写性能(只读和只写场景)的影响。


-由图中可以看到
+由图中可以看到:
* 扩容对写性能的提升要优于读性能的提升
* 扩容带来的性能提升并不是线性增加的
你可以根据该项测试合理估计不同机器下所能承载的请求负载
-### 表分片数
-
-该项测试旨在观察,表的不同分片对性能的影响。测试场景为:
+### 不同的表分片数
-仅读:3client*50thread
+该项测试旨在观察,表的不同分片对性能的影响。
-仅写:3client*40thread
+> 测试场景为:
+> 仅读:`threads`配置为:3 * 50
+> 仅写:`threads`配置为:3 * 40

-由图中可以看到,增加分片可以提高读性能,但是降低了写性能,所以请合理评估你的业务需求。除此之外,若分片数过小,可能会导致单分片过大,磁盘分布不均的问题,在实际的线上业务中,如无特别需求,我们建议单分片维持在10GB以内是合理的
+由图中可以看到,增加分片可以提高读性能,但是降低了写性能,所以请合理评估你的业务需求。
+除此之外,若分片数过小,可能会导致单分片过大,磁盘分布不均的问题,在实际的线上业务中,如无特别需求,建议单分片维持在10GB以内。
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]