このトピックでは、ApsaraDB for Redis Enhanced Edition (Tair) 永続メモリ最適化インスタンスのテストについて説明します。 テスト環境、ツール、メソッド、および結果が導入されます。
概要
Tair永続メモリ最適化インスタンスは、オープンソースのRedisと互換性のある大容量のインメモリデータベースを提供するために永続メモリを採用しています。 永続的なメモリ最適化インスタンスは、ディスクを使用してデータの永続性を実装せず、ApsaraDB for Redis Community Editionインスタンスよりもコスト30% が低く、ほぼ同じスループットとレイテンシを実現し、各操作の永続性を維持します。 これにより、ビジネスデータの信頼性が向上します。 詳細については、「永続的なメモリ最適化インスタンス」をご参照ください。
テスト環境
環境アイテム | 説明 |
リージョンとゾーン | すべてのテストは張家口ゾーンAで行われます。 |
インスタンスアーキテクチャ | 標準のマスター-レプリカアーキテクチャが使用されます。 詳細については、「標準アーキテクチャ」をご参照ください。 |
ストレステストツールを展開する仮想マシン | ECS. g6e.8xlargeタイプのElastic Compute Service (ecs) インスタンスが使用されます。 詳細については、「インスタンスファミリーの概要」をご参照ください。 |
インスタンスタイプ | テストでは、インスタンスタイプtair.scm.standard.32m.128dが使用されます。 詳細については、「永続的なメモリ最適化インスタンス」をご参照ください。 |
テストツール
オープンソースYCSBを使用してストレステストを実行できます。 YCSBは、複数の種類のデータベースのパフォーマンスをベンチマークするために使用できるJavaツールです。 YCSBのインストール方法と使用方法の詳細については、「YCSB」をご参照ください。
オープンソースYCSBはハッシュのみをテストします。 YCSBを使用して文字列をテストするには、YCSBをダウンロードした後、ycsb /redis/src/main/java/site /YCSB /dbディレクトリにある同じ名前の元のファイルをRedisClient.javaファイルで置き換える必要があります。
ワークロード
テストに含まれるデータの総量は8 GBです。 データの配布方法はZipfianです。 永続メモリ最適化インスタンスのパフォーマンスは、次のシナリオでテストされました。
データ読み込み: 100% 書き込み操作。
ワークロードC: 100% 読み取り操作。
ワークロードA: 50% の更新操作と50% の読み取り操作。
ワークロードの詳細については、「コアワークロード」をご参照ください。
セットとZsetsの複雑なコマンドは、適用可能なシナリオのため、このテストではテストできません。 ビジネスシナリオに基づいて、セットとZsetsのテストをカスタマイズできます。
テストコマンド
# Load data.
workload=a
./bin/ycsb load redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
# Run Workload C.
workload=c
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
# Run Workload A.
workload=a
./bin/ycsb run redis -s -P workloads/workload${workload} -p "redis.host=${server_ip}" -p "redis.port=${port}" -p "redis.password=${password}" -p "recordcount=${recordcount}" -p "operationcount=${operationcount}" -p "redis.timeout=30000" -p "redis.command_group=${command_group}" -p "fieldcount=${fieldcount}" -p "fieldlength=${fieldlength}" -threads ${threads} -p "redis.password=***:*****"
表 1. パラメーター
パラメーター | 説明 |
server_ip | Tairインスタンスへの接続に使用されるIPアドレス。 |
port | Tairインスタンスへの接続に使用されるサービスポート。 |
password | パスワードの形式は、選択したアカウントによって異なります。
説明 パスワードを忘れた場合は、リセットできます。 詳細については、「パスワードの変更またはリセット」をご参照ください。 |
recordcount | 準備されたデータの量。 |
operationcount | 操作に含まれるデータの量。 |
command_group | テストするデータの種類。 このテストでは、次の種類のデータが順番にテストされます。
|
フィールドカウント | フィールドまたは要素の数。 文字列をテストするには、このパラメーターを1に設定します。 他の種類のデータをテストするには、このパラメーターを10に設定します。 |
フィールド长さ | 値の長さ。 テスト要件に基づいてこのパラメーターを設定します。 |
スレッド | YCSBスレッドの数。 インスタンスタイプに基づいてこのパラメーターを設定します。 |
テスト結果
テストメトリック | 説明 |
QPS | 1秒あたりに処理される読み取りおよび書き込み操作の数。 |
INSERT平均レイテンシ | 書き込み操作の平均レイテンシ。 単位: µ s。 |
挿入99パーセンタイル遅延 | 書き込み操作の最速99% のための最も高いレイテンシ。 単位: µ s。 たとえば、このパラメーターが500 µ sに設定されている場合、99% の操作は500 µ s以内に処理されます。 |
READ AverageLatency | 読み取り操作の平均レイテンシ。 単位: µ s。 |
READ 99thPercentileLatency | 読み取り操作の最速99% のための最も高いレイテンシ。 単位: µ s。 |
UPDATE AverageLatency | 更新操作の平均レイテンシ。 単位: µ s。 |
UPDATE 99thPercentileLatency | 更新操作の最速99% のための最も高いレイテンシ。 単位: µ s。 |
データ読み込みのテスト結果
表2. 文字列
値の長さ (バイト) | QPS | INSERT平均レイテンシ (µ s) | 挿入99パーセンタイル遅延 (µ s) |
128 | 134,478 | 473 | 687 |
256 | 126,139 | 504 | 828 |
1,024 | 99,775 | 638 | 1,051 |
2,048 | 77,130 | 826 | 1,157 |
4,096 | 60,646 | 1,050 | 1,534 |
表3. ハッシュ
キー内のフィールド数 | 値の長さ (バイト) | QPS | INSERT平均レイテンシ (µ s) | 挿入99パーセンタイル遅延 (µ s) |
10 | 128 | 47,353 | 1,348 | 1,885 |
256 | 46,716 | 1,366 | 2,181 | |
1,024 | 27,759 | 2,297 | 2,873 | |
2,048 | 16,605 | 3,833 | 4,923 |
表4. リスト
キー内の要素数 | 値の長さ (バイト) | QPS | INSERT平均レイテンシ (µ s) | 挿入99パーセンタイル遅延 (µ s) |
10 | 128 | 64,950 | 979 | 1,310 |
256 | 47,157 | 1,348 | 1,752 | |
1,024 | 26,719 | 2,386 | 3,457 | |
2,048 | 16,714 | 3,811 | 4,751 | |
4,096 | 10,129 | 6,279 | 7,891 |
表5. セット
キー内のメンバー数 | 値の長さ (バイト) | QPS | INSERT平均レイテンシ (µ s) | 挿入99パーセンタイル遅延 (µ s) |
10 | 128 | 63,670 | 1,001 | 1,514 |
256 | 44,707 | 1,427 | 2,129 | |
1,024 | 25,375 | 2,513 | 3,239 | |
2,048 | 14,318 | 4,451 | 5,619 | |
4,096 | 8,378 | 7,608 | 9,095 |
表6. ソートセット
キー内の要素数 | 値の長さ (バイト) | QPS | INSERT平均レイテンシ (µ s) | 挿入99パーセンタイル遅延 (µ s) |
10 | 128 | 40,292 | 1,585 | 2,469 |
256 | 34,168 | 1,869 | 2,569 | |
1,024 | 21,347 | 2,989 | 3,905 | |
2,048 | 12,868 | 4,956 | 6,255 | |
4,096 | 7,864 | 8,101 | 9,599 |
ワークロードCのテスト結果
表7. 文字列
値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) |
128 | 170,699 | 362 | 546 |
256 | 163,829 | 380 | 565 |
1,024 | 161,491 | 386 | 569 |
2,048 | 130,189 | 487 | 729 |
4,096 | 115,433 | 548 | 808 |
表8. ハッシュ
キー内のフィールド数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) |
10 | 128 | 96,111 | 662 | 874 |
256 | 86,892 | 733 | 915 | |
1,024 | 61,608 | 1,030 | 1,293 | |
2,048 | 37,334 | 1,696 | 2,331 | |
4,096 | 25,943 | 2,429 | 3,319 |
表9. リスト
キー内の要素数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) |
10 | 128 | 105,296 | 604 | 889 |
256 | 97,047 | 655 | 890 | |
1,024 | 66,384 | 955 | 1,192 | |
2,048 | 35,796 | 1,769 | 2,461 | |
4,096 | 26,314 | 2,392 | 3,271 |
表10. セット
キー内のメンバー数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) |
10 | 128 | 97,825 | 651 | 896 |
256 | 80,954 | 787 | 970 | |
1,024 | 59,924 | 1,060 | 1,313 | |
2,048 | 33,356 | 1,900 | 2,637 | |
4,096 | 23,605 | 2,677 | 3,723 |
表11. ソートセット
キー内の要素数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) |
10 | 128 | 58,380 | 1,093 | 1,341 |
256 | 56,287 | 1,133 | 1,390 | |
1,024 | 47,468 | 1,338 | 1,688 | |
2,048 | 30,073 | 2,096 | 2,783 | |
4,096 | 21,850 | 2,880 | 3,765 |
ワークロードAのテスト結果
表12. 文字列
値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) | UPDATE平均レイテンシ (µ s) | UPDATE 99thパーセンタイル遅延 (µ s) |
128 | 141,120 | 451 | 616 | 450 | 618 |
256 | 137,551 | 463 | 617 | 461 | 618 |
1,024 | 124,165 | 516 | 724 | 508 | 725 |
2,048 | 92,652 | 695 | 881 | 678 | 871 |
4,096 | 78,994 | 819 | 1,042 | 791 | 1,024 |
表13. ハッシュ
キー内のフィールド数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) | UPDATE平均レイテンシ (µ s) | UPDATE 99thパーセンタイル遅延 (µ s) |
10 | 128 | 99,495 | 646 | 831 | 633 | 820 |
256 | 88,235 | 731 | 985 | 712 | 966 | |
1,024 | 72,013 | 892 | 1,159 | 863 | 2,049 | |
2,048 | 45,790 | 1,379 | 1,898 | 1,354 | 2,821 | |
4,096 | 32,912 | 1,891 | 2,931 | 1,915 | 7,887 |
表14. リスト
キー内の要素数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) | UPDATE平均レイテンシ (µ s) | UPDATE 99thパーセンタイル遅延 (µ s) |
10 | 128 | 71,696 | 591 | 775 | 1,185 | 1,383 |
256 | 66,294 | 638 | 800 | 1,281 | 1,456 | |
1,024 | 53,402 | 791 | 1,006 | 1,581 | 1,865 | |
2,048 | 36,519 | 1,221 | 1,581 | 2,232 | 2,831 | |
4,096 | 28,390 | 1,618 | 2,113 | 2,803 | 3,777 |
表15. セット
キー内のメンバー数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) | UPDATE平均レイテンシ (µ s) | UPDATE 99thパーセンタイル遅延 (µ s) |
10 | 128 | 66,346 | 640 | 792 | 1,282 | 1,445 |
256 | 60,010 | 707 | 993 | 1,415 | 1,957 | |
1,024 | 45,359 | 933 | 1,128 | 1,858 | 2,073 | |
2,048 | 29,027 | 1,529 | 2,021 | 2,820 | 4,507 | |
4,096 | 21,440 | 2,144 | 2,773 | 3,726 | 5,095 |
表16. ソートセット
キー内の要素数 | 値の長さ (バイト) | QPS | READ平均レイテンシ (µ s) | READ 99パーセンタイル遅延 (µ s) | UPDATE平均レイテンシ (µ s) | UPDATE 99thパーセンタイル遅延 (µ s) |
10 | 128 | 49,695 | 861 | 1,050 | 1,707 | 1,912 |
256 | 48,036 | 891 | 1,084 | 1,763 | 1,970 | |
1,024 | 39,795 | 1,081 | 1,386 | 2,107 | 2,563 | |
2,048 | 28,415 | 1,597 | 1,981 | 2,855 | 3,589 | |
4,096 | 21,317 | 2,247 | 2,821 | 3,665 | 4,787 |