# Kiểm thử áp lực

## Kiểm thử sản phẩm Redis Primary và Standby Kuaijie
### Môi trường kiểm thử
#### Redis-server
Phiên bản phần mềm: 6.0

Dòng máy chủ: Redis Primary và Standby phiên bản Kuaijie, Mô hình máy vật lý thông thường

Thông số kỹ thuật sản phẩm: Kuaijie 1G, Kuaijie 2G, Kuaijie 4G, Kuaijie 6G, Kuaijie 8G, Mô hình máy vật lý thông thường

#### Redis-benchmark
Dòng máy chủ: Kuaijie loại O

Phiên bản hệ thống: CentOS 8.3

Cấu hình máy: 16C/16G

#### Memtier_benchmark
Dòng máy chủ: Kuaijie loại O

Phiên bản hệ thống: CentOS 6.4

Cấu hình máy: 16C/16G
### Kịch bản kiểm thử
#### 1. Số lượng kết nối khác nhau, tắt pipeline
Script kiểm thử:
```
#!/bin/bash
for clients in {1,2,4,8,16,32,64,128,256,512,800}; do
    redis-benchmark  -c $connection -n 1000000 -h IP -d 256 -t get,set -q --threads 4
done
```
##### Kết quả kiểm thử
Hiệu năng Set<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 800 |
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 14118 | 26991 | 50571 | 83222 | 117619 | 137741 | 153822 | 166417 | 147819 | 153609 | 153421 |
| Kuaijie 2G | 14067 | 27550 | 51986 | 85077 | 105241 | 142653 | 163671 | 142633 | 142612 | 153468 | 159565 |
| Kuaijie 4G | 13921 | 28136 | 51221 | 84997 | 117495 | 142673 | 159769 | 159769 | 159846 | 159616 | 153421 |
| Kuaijie 6G | 13921 | 27773 | 48711 | 85091 | 114116 | 142653 | 166334 | 166417 | 166361 | 153444 | 153444 |
| Kuaijie 8G | 14068 | 27939 | 50568 | 86850 | 117495 | 142633 | 159744 | 159718 | 159872 | 159769 | 147819 |
| Mô hình máy vật lý thông thường | 8979 | 16774 | 28036 | 40722 | 52919 | 59917 | 64263 | 66813 | 68694 | 69101 | 72364 |

Hiệu năng Get<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 800 |
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 16509 | 30972 | 58750 | 102438 | 153657 | 181587 | 210482 | 199720 | 199680 | 190258 | 199521 |
| Kuaijie 2G | 15667 | 28951 | 57960 | 96880 | 142673 | 173671 | 189720 | 188680 | 180817 | 181827 | 192216 |
| Kuaijie 4G | 16509 | 30733 | 57690 | 97880 | 142673 | 181620 | 199760 | 190367 | 190403 | 189760 | 192897 |
| Kuaijie 6G | 16578 | 30709 | 57822 | 98427 | 142653 | 173671 | 190216 | 199680 | 195114 | 191587 | 212024 |
| Kuaijie 8G | 16578 | 30815 | 59633 | 102553 | 142836 | 190222 | 210260 | 190186 | 199920 | 210128 | 209995 |
| Mô hình máy vật lý thông thường | 9973 | 19272 | 31571 | 47803 | 66246 | 86145 | 90371 | 90973 | 93531 | 95892 | 91907 |

#### 2. Kích thước dữ liệu khác nhau, tắt pipeline
Script kiểm thử:
```
#!/bin/bash
for data_size in {1,8,64,512,4096}; do
    redis-benchmark -c 64 -n 1000000 -h IP -d $data_size -t get,set -q --threads 4
done
# Kích thước dữ liệu 32KiB chạy trong thời gian dài dễ gây ra lỗi OOM cho instance dung lượng 1GB.
data_size=32768
redis-benchmark -c 64 -n 50000 -h IP -d $data_size -t get,set -q --threads 4
```
##### Kết quả kiểm thử
Hiệu năng Set<br />

| Byte | 1 Byte | 8 Byte | 64 Byte | 512 Byte | 4096 Byte | 32768 Byte |
| -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 173671 | 173852 | 166444 | 128998 | 66622 | 10748 |
| Kuaijie 2G | 181521 | 173671 | 159769 | 137741 | 65449 | 12077 |
| Kuaijie 4G | 181752 | 181587 | 173671 | 142816 | 61413 | 11659 |
| Kuaijie 6G | 166417 | 159795 | 166472 | 147928 | 68922 | 11075 |
| Kuaijie 8G | 181554 | 163609 | 152694 | 143657 | 66613 | 12676 |

Hiệu năng Get<br />

| Byte | 1 Byte | 8 Byte | 64 Byte | 512 Byte | 4096 Byte | 32768 Byte |
| -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 199680 | 190186 | 190439 | 190222 | 117467 | 11425 |
| Kuaijie 2G | 199720 | 199960 | 199720 | 190186 | 117605 | 12028 |
| Kuaijie 4G | 210260 | 199960 | 210216 | 199960 | 121036 | 13319 |
| Kuaijie 6G | 199415 | 190222 | 199920 | 199680 | 117605 | 12519 |
| Kuaijie 8G | 199920 | 181554 | 181554 | 181554 | 117481 | 14490 |

<!-- image-todo -->
#### 3. Số lượng kết nối khác nhau, bật pipeline
Script kiểm thử:
```
#!/bin/bash
for clients in {1,2,4,8,16,32,64,128,256,512,800}; do
    redis-benchmark  -c $clients -n 5000000 -P 100 -h IP  -d 256 -t get,set -q --threads 4
done
```
##### Kết quả kiểm thử
Hiệu năng Set<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 800 |
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 332933 | 487044 | 486854 | 524989 | 525430 | 525265 | 511561 | 498305 | 463907 | 433162 | 406471 |
| Kuaijie 2G | 350434 | 475465 | 511823 | 539257 | 525430 | 511770 | 498454 | 511142 | 453391 | 424052 | 442712 |
| Kuaijie 4G | 356709 | 475330 | 539548 | 539374 | 524824 | 511718 | 524989 | 511195 | 464037 | 443262 | 414593 |
| Kuaijie 6G | 344400 | 475556 | 512242 | 525154 | 525320 | 538851 | 498902 | 511195 | 498256 | 423980 | 415006 |
| Kuaijie 8G | 350459 | 487187 | 540073 | 539374 | 539723 | 554262 | 538793 | 511665 | 463520 | 433200 | 398883 |
| Mô hình máy vật lý thông thường | 137155 | 165579 | 182681 | 178424 | 189343 | 184836 | 195266 | 207331 | 202609 | 193318 | 190614 |

Hiệu năng Get<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 800 |
| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- |
| Kuaijie 1G | 665778 | 1174536 | 1537042 | 1662786 | 1537042 | 1663893 | 1532801 | 1533742 | 1424095 | 1532332 | 1421666 |
| Kuaijie 2G | 644329 | 1109631 | 1535626 | 1663340 | 1663893 | 1662234 | 1534212 | 1661681 | 1534683 | 1423284 | 1328021 |
| Kuaijie 4G | 645778 | 1174812 | 1537111 | 1606782 | 1663893 | 1661681 | 1662234 | 1662234 | 1662786 | 1533272 | 1532332 |
| Kuaijie 6G | 645867 | 1051082 | 1663340 | 1665001 | 1665001 | 1711594 | 1661129 | 1660577 | 1661129 | 1532801 | 1531393 |
| Kuaijie 8G | 644246 | 1174536 | 1665556 | 1663340 | 1663340 | 1661681 | 1533742 | 1533742 | 1535626 | 1533742 | 1423284 |
| Mô hình máy vật lý thông thường | 230075 | 406834 | 418795 | 475737 | 491980 | 498952 | 505152 | 542711 | 501705 | 501403 | 482020 |

#### 4. Kiểm thử áp lực kết nối ngắn (Short Connection)
Kiểm thử áp lực kết nối ngắn nhằm mục đích kiểm tra hiệu năng của các sản phẩm Redis khác nhau trong các điều kiện tỷ lệ đọc và ghi khác nhau.<br />
Script kiểm thử:
```
#!/bin/bash
memtier_benchmark -s IP -p 6379 -c 30 -t 8 -n 1000 --ratio=10:0 --reconnect-interval=1
memtier_benchmark -s IP -p 6379 -c 30 -t 8 -n 1000 --ratio=5:5 --reconnect-interval=1
memtier_benchmark -s IP -p 6379 -c 30 -t 8 -n 1000 --ratio=0:10 --reconnect-interval=1
```
##### Kết quả kiểm thử

| Tỷ lệ Đọc/Ghi | 10:0 | 5:5 | 0:10 |
| -- | -- | -- | -- |
| Kuaijie 1G | 29111 | 28039 | 28433 |
| Kuaijie 2G | 27748 | 28136 | 27952 |
| Kuaijie 4G | 28269 | 28190 | 27664 |
| Kuaijie 6G | 27491 | 27870  | 28297 |
| Kuaijie 8G | 28037 | 27965 | 27916 |

## Kiểm thử sản phẩm Redis phiên bản tăng cường hiệu năng (Performance Enhanced)

#### Redis-server
Phiên bản phần mềm: Redis phiên bản tăng cường hiệu năng

Thông số kỹ thuật sản phẩm: 4G, 6G, 8G, 12G, 16G, 24G, 32G, 40G, 48G, 56G, 64G

#### Redis-benchmark
Dòng máy chủ: Kuaijie loại O

Phiên bản hệ thống: CentOS 8.3

Cấu hình máy: 16C/16G

### Kịch bản kiểm thử
#### 1. Số lượng kết nối khác nhau
Script kiểm thử:
```
#!/bin/bash
for clients in {1,2,4,8,32,64,128,256,512,800}; do
    redis-benchmark -c $clients -n 10000000 -h IP -d 256 -t get,set -q --threads 8
done
```

#### Kết quả kiểm thử
Hiệu năng Set<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 32 | 64 | 128 | 256 | 512 | 800 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Multi-Core Primary và Standby 4G | 18669 | 34442 | 55594 | 66216 | 193702 | 227917 | 230542 | 226623 | 223428 | 227855 |
| Multi-Core Primary và Standby 6G | 18070 | 30221 | 58308 | 76917 | 200934 | 240934 | 232541 | 231197 | 232498 | 227195 |
| Multi-Core Primary và Standby 8G | 19633 | 34442 | 64437 | 76913 | 195114 | 219770 | 218574 | 217386 | 217339 | 219712 |
| Multi-Core Primary và Standby 12G | 19827 | 36993 | 65492 | 69315 | 157475 | 217386 | 220984 | 215049 | 204035 | 209929 |
| Multi-Core Primary và Standby 16G | 19976 | 34891 | 66666 | 81457 | 191372 | 224709 | 224714 | 216202 | 218541 | 219702 |
| Multi-Core Primary và Standby 24G | 20626 | 36619 | 63592 | 77058 | 176202 | 188675 | 228560 | 210508 | 220935 | 220945 |
| Multi-Core Primary và Standby 32G | 17908 | 34013 | 56576 | 59622 | 200996 | 238083 | 239503 | 231203 | 228529 | 228503 |
| Multi-Core Primary và Standby 40G | 20723 | 39170 | 69565 | 104437 | 155634 | 238089 | 248434 | 239503 | 235249 | 235244 |
| Multi-Core Primary và Standby 48G | 17756 | 34071 | 61162 | 103358 | 178558 | 231203 | 245398 | 233912 | 227231 | 228508 |
| Multi-Core Primary và Standby 56G | 18801 | 31629 | 60352 | 105680 | 190421 | 228169 | 233481 | 220526 | 237450 | 227863 |
| Multi-Core Primary và Standby 64G | 18243 | 34441 | 60990 | 105259 | 123819 | 227252 | 249975 | 235271 | 238049 | 239440 |

Hiệu năng Get<br />

| Số lượng kết nối | 1 | 2 | 4 | 8 | 32 | 64 | 128 | 256 | 512 | 800 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Multi-Core Primary và Standby 4G | 20536 | 37313 | 68530 | 109436 | 240582 | 308875 | 336123 | 323881 | 326503 | 337478 |
| Multi-Core Primary và Standby 6G | 20830 | 38940 | 74486 | 112037 | 238449 | 336123 | 333803 | 344815 | 330545 | 344768 |
| Multi-Core Primary và Standby 8G | 22765 | 42552 | 73308 | 114933 | 229740 | 305334 | 319989 | 327847 | 340912 | 360321 |
| Multi-Core Primary và Standby 12G | 23364 | 43903 | 82372 | 119753 | 189566 | 310048 | 317460 | 296269 | 350840 | 333500 |
| Multi-Core Primary và Standby 16G | 23529 | 43287 | 76538 | 122319 | 224757 | 312490 | 322570 | 333311 | 319959 | 314891 |
| Multi-Core Primary và Standby 24G | 23627 | 42685 | 79114 | 123449 | 249993 | 288089 | 322570 | 317450 | 320000 | 331071 |
| Multi-Core Primary và Standby 32G | 20281 | 36788 | 74678 | 111724 | 264893 | 330567 | 360347 | 336111 | 347898 | 333277 |
| Multi-Core Primary và Standby 40G | 24406 | 45195 | 72118 | 136050 | 240940 | 341868 | 360894 | 333151 | 384718 | 370329 |
| Multi-Core Primary và Standby 48G | 20520 | 38527 | 65681 | 126982 | 170905 | 319989 | 357117 | 373775 | 344803 | 366864 |
| Multi-Core Primary và Standby 56G | 20240 | 38379 | 69435 | 119383 | 212363 | 287728 | 330447 | 316876 | 306955 | 322242 |
| Multi-Core Primary và Standby 64G | 20489 | 37374 | 72642 | 130288 | 170277 | 307654 | 325192 | 392354 | 385835 | 382252 |

#### 2. Kích thước dữ liệu khác nhau
Script kiểm thử:
```
#!/bin/bash
for data_size in {16,32,64,128,256,512,1024,4096,8192,32768}; do
    redis-benchmark -c 200 -n 10000000 -h IP -d $data_size -t get,set -q --threads 8
done
```
#### Kết quả kiểm thử
Hiệu năng Set<br />

| Byte | 16 Byte | 32 Byte | 64 Byte | 128 Byte | 256 Byte | 512 Byte | 1024 Byte | 4096 Byte | 8192 Byte | 32768 Byte |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Multi-Core Primary và Standby 4G | 283679 | 277777 | 266666 | 263150 | 245380 | 228555 | 196070 | 92569 | 54021 | 10748 |
| Multi-Core Primary và Standby 6G | 258044 | 369329 | 501356 | 504464 | 518645 | 478739 | 186764 | 85420 | 48751 | 10771 |
| Multi-Core Primary và Standby 8G | 248428 | 243890 | 249770 | 259726 | 240952 | 206206 | 184775 | 86840 | 49410 | 11329 |
| Multi-Core Primary và Standby 12G | 250000 | 246907 | 238083 | 233912 | 220535 | 206407 | 183865 | 87779 | 49978 | 12478 |
| Multi-Core Primary và Standby 16G | 249993 | 245392 | 245380 | 233912 | 221209 | 207294 | 185669 | 87112 | 49923 | 11282 |
| Multi-Core Primary và Standby 24G | 253158 | 243232 | 236680 | 231208 | 216525 | 202501 | 182646 | 86440 | 49450 | 11349 |
| Multi-Core Primary và Standby 32G | 248181 | 254770 | 253158 | 263707 | 248439 | 228142 | 204752 | 92203 | 49214 | 12070 |
| Multi-Core Primary và Standby 40G | 279696 | 255049 | 249770 | 239509 | 238089 | 204509 | 186770 | 88493 | 50113 | 13310 |
| Multi-Core Primary và Standby 48G | 275854 | 270255 | 238083 | 231203 | 220574 | 200997 | 182633 | 85078 | 49392 | 10748 |
| Multi-Core Primary và Standby 56G | 257552 | 259733 | 253109 | 248428 | 232922 | 206252 | 184632 | 86419 | 50178 | 12119 |
| Multi-Core Primary và Standby 64G | 283679 | 277754 | 268434 | 248428 | 238089 | 214847 | 187536 | 83336 | 49289 | 13324 |

Hiệu năng Get<br />

| Byte | 16 Byte | 32 Byte | 64 Byte | 128 Byte | 256 Byte | 512 Byte | 1024 Byte | 4096 Byte | 8192 Byte | 32768 Byte |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Multi-Core Primary và Standby 4G | 363633 | 363206 | 339713 | 333277 | 333464 | 292565 | 205707 | 121139 | 54137 | 13319 |
| Multi-Core Primary và Standby 6G | 341868 | 316880 | 347908 | 338905 | 322570 | 261650 | 208862 | 99598 | 57887 | 13331 |
| Multi-Core Primary và Standby 8G | 331071 | 347814 | 338894 | 338894 | 331071 | 296276 | 211920 | 101347 | 54872 | 13393 |
| Multi-Core Primary và Standby 12G | 327847 | 281554 | 341870 | 327847 | 325228 | 290909 | 211911 | 98340 | 54911 | 13316 |
| Multi-Core Primary và Standby 16G | 331071 | 333322 | 333322 | 333322 | 325228 | 302557 | 213869 | 86070 | 54890 | 13327 |
| Multi-Core Primary và Standby 24G | 327847 | 338948 | 333322 | 285708 | 325228 | 304463 | 211983 | 102734 | 54435 | 13347 |
| Multi-Core Primary và Standby 32G | 331071 | 346945 | 353963 | 357142 | 344825 | 315302 | 227253 | 96267 | 54994 | 12010 |
| Multi-Core Primary và Standby 40G | 362800 | 381549 | 346944 | 338947 | 338947 | 289475 | 222248 | 82766 | 47709 | 12742 |
| Multi-Core Primary và Standby 48G | 277777 | 333322 | 344827 | 357142 | 333322 | 289395 | 201010 | 94132 | 54535 | 12805 |
| Multi-Core Primary và Standby 56G | 331071 | 333322 | 363609 | 363200 | 302557 | 304463 | 195116 | 97215 | 54440 | 11708 |
| Multi-Core Primary và Standby 64G | 361111 | 363609 | 362800 | 363609 | 347814 | 302557 | 218655 | 99849 | 49186 | 12297 |

<!-- image-todo -->

# Kiểm thử hiệu năng Proxy

#### Đối tượng kiểm thử
Mô hình: Phiên bản phân tán (Distributed)

Loại cơ sở dữ liệu: Phiên bản tăng cường hiệu năng (Performance Enhanced)

Dung lượng đơn Shard: 6GB

Proxy: Proxy Redis phiên bản phân tán NVMe (hoặc SSD)

Số lượng Shard: 2 shard, 4 shard, 8 shard, 16 shard

#### Redis-benchmark
Dòng máy chủ: Kuaijie loại O

Phiên bản hệ thống: CentOS 7.6

Cấu hình máy: 32C/32G

### Bối cảnh kiểm thử

#### Câu lệnh kiểm thử
```
redis-benchmark -h IP -t set,get -d 256 --threads 32 -c 960 -n 10000000 -r 10000
```

#### Kết quả kiểm thử
Hiệu năng Set<br />

| Số lượng nhân (Core) Proxy | 2 | 4 | 8 | 16 | 32 | 64 |
| -- | -- | -- | -- | -- | -- | -- |
| 2 shard | 217244 | 386701 | 415299 | 469241 | 520450 | 521247 |
| 4 shard | 236501 | 369329 | 501356 | 504464 | 518645 | 537521 |
| 8 shard | 235122 | 379518 | 514412 | 527475 | 546298 | 539025 |
| 16 shard | 224202 | 385131 | 561829 | 577600 | 675904 | 712301 |

Hiệu năng Get<br />

| Số lượng nhân (Core) Proxy | 2 | 4 | 8 | 16 | 32 | 64 |
| -- | -- | -- | -- | -- | -- | -- |
| 2 shard | 188469 | 311075 | 395238 | 391144 | 492053 | 587406 |
| 4 shard | 189257 | 329973 | 504884 | 491908 | 491859 | 553863 |
| 8 shard | 189082 | 326085 | 566544 | 588657 | 602831 | 605202 |
| 16 shard | 178275 | 329793 | 569800 | 587302 | 756636 | 797257 |