背景情報
このトピックでは、ApsaraDB for Cassandra のベンチマークテストを実行する方法と、テストに基づいたサンプル結果について説明します。テスト結果はカーネルとクラウド環境によって異なるため、テスト結果が ApsaraDB for Cassandra の最適なパフォーマンスを示していない可能性があります。ビジネスに最適な ApsaraDB for Cassandra インスタンスのサイズを評価する場合は、このトピックで説明されているテストを使用できます。インスタンスサイズを評価する最良の方法は、ApsaraDB for Cassandra インスタンスでシミュレートされたワークロードを実行することです。結果は、外部ベンチマークツールによって提供される結果よりも正確です。
テストツール
Yahoo Cloud Serving Benchmark(YCSB) 0.15.0 を使用して、ApsaraDB for Cassandra のベンチマークテストを実行します。YCSB は標準のベンチマークツールです。詳細については、https://github.com/brianfrankcooper/YCSB/tree/0.15.0/cassandra にアクセスしてください。
テスト環境
テスト用に ApsaraDB for Cassandra インスタンスを購入します。
ネットワーク:VPC(仮想プライベートクラウド)。クライアントとサーバーは同じリージョンとゾーンにデプロイする必要があります。インスタンスアーキテクチャ:3 つのノードで構成される 1 つのクラウドデータセンター。インスタンスストレージ:ノードごとに 400 GB の標準 SSD。ストレージ容量はインスタンスのパフォーマンスに影響します。ストレステスト用クライアント:ecs.c6.2xlarge(8 vCPU、16 GB)。インスタンスの仕様:ApsaraDB for Cassandra でサポートされているすべての仕様。
ワークロードの説明
ApsaraDB for Cassandra のスループットとレイテンシは、行ごとのフィールド数や各行のデータサイズなど、ワークロードによって異なります。この例では、YCSB のデフォルトの workloada を使用してテストを行います。ビジネス要件に基づいて YCSB パラメーターを変更できます。ApsaraDB for Cassandra のテストに使用するほとんどのパラメーターについては、デフォルト値を維持します。詳細については、https://github.com/brianfrankcooper/YCSB/tree/0.15.0/cassandra にアクセスしてください。
[主要なパラメーター]
行あたり 10 フィールド(デフォルト)。
行あたり 1 KB(デフォルト)。
読み取り/書き込み操作の比率:95:5。
読み取り/書き込みの整合性レベル:ONE(デフォルト)。
レプリカの数:ディスクを使用するため、2 つのレプリカを指定します。
ストレステストスレッド:インスタンスの仕様に基づいて変更します。詳細については、テスト結果をご覧ください。
recordcount:インポートされた行数。仕様に基づいてパラメーターを変更します。詳細については、テスト結果をご覧ください。
operationcount:ストレステストの回数。このパラメーターの値は、recordcount パラメーターの値と同じです。
整合性レベルの設定は、パフォーマンスに影響する可能性があります。ビジネス要件に基づいて整合性レベルを指定します。
手順
手順 1. テストテーブルを作成する
# cn-shanghai-g を、購入したインスタンスのクラウドデータセンター ID に置き換えます。 ApsaraDB for Cassandra コンソールで [データセンター名] パラメーターを表示できます。
create keyspace ycsb WITH replication = {'class': 'NetworkTopologyStrategy', 'cn-shanghai-g': 2};
create table ycsb.usertable (y_id varchar primary key, field0 varchar, field1 varchar, field2 varchar, field3 varchar, field4 varchar, field5 varchar, field6 varchar, field7 varchar, field8 varchar, field9 varchar);
手順 2. ベンチマークツールをインストールする
wget https://github.com/brianfrankcooper/YCSB/releases/download/0.15.0/ycsb-cassandra-binding-0.15.0.tar.gz
tar -zxf ycsb-cassandra-binding-0.15.0.tar.gz
手順 3. workloads/workloada コードを変更する
次のコンテンツを追加します。
hosts=cds-xxxxxxxx-core-003.cassandra.rds.aliyuncs.com #データベースのエンドポイント。エンドポイントは ApsaraDB for Cassandra コンソールで確認できます。
cassandra.username=cassandra #アカウントには、ycsb キースペースの読み取りと書き込みの権限が付与されている必要があります。
cassandra.password=123456 #パスワードを忘れた場合は、コンソールでパスワードを変更できます。
手順 4. データを準備する(書き込みテスト)
nohup ./bin/ycsb load cassandra2-cql -threads $THREAD_COUNT -P workloads/workloada -s > $LOG_FILE 2>&1 &
このテストの結果は、最大書き込みスループットを示しています。最大スループットをテストするには、$THREAD_COUNT の値を増やし、スループットが増加するかどうかを確認する必要があります。ストレステスト用クライアントの仕様は、中程度または高程度である必要があります。
手順 5. ストレステストを実行する(読み取りおよび書き込みテスト)
nohup ./bin/ycsb run cassandra2-cql -threads $THREAD_COUNT -P workloads/workloada -s > $LOG_FILE 2>&1 &
このテストの結果は、読み取りと書き込みのパフォーマンスを示しています。
テスト結果
この例に示すテスト結果は、参考値としてのみ提供されています。スループットとレイテンシは、ワークロードによって異なります。ビジネスに最適なテスト結果を得るために、さまざまなパラメーターとワークロードを使用したり、テストデータの量を増やす(期間を長くする)ことができます。クライアントの仕様は、テスト結果に影響する可能性があります。共有インスタンスは使用しないでください。
テスト結果の説明
Load:データの準備(書き込みテスト)
Run:ストレステスト(読み取りおよび書き込みテスト)
OPS:1 秒あたりの操作数。全体的なスループットを示します。
WAVG:平均書き込みレイテンシ。単位:マイクロ秒。
RAVG:平均読み取りレイテンシ。単位:マイクロ秒。
RP999:99.9 パーセンタイルの書き込みレイテンシ。単位:マイクロ秒。
Thread:100/100。データ準備フェーズでのテストスレッド数とストレステストフェーズでのテストスレッド数の比較を示します。
ストレステストフェーズでは、フルロードテストと定期テストが実行されます。
80% CPU 負荷
仕様 | スレッド | データ量(万行) | Load OPS | Load WAVG | Run OPS | Run WAVG | Run RAVG | Run RP95 | Run RP99 | Run RP999 |
---|---|---|---|---|---|---|---|---|---|---|
4 vCPU 8 GB | 100/100 | 1600 | 32277 | 3071 | 29745 | 2846 | 3363 | 7795 | 23039 | 43999 |
60% CPU 負荷
仕様 | スレッド | データ量(万行) | Load OPS | Load WAVG | Run OPS | Run WAVG | Run RAVG | Run RP95 | Run RP99 | Run RP999 |
---|---|---|---|---|---|---|---|---|---|---|
4 vCPU 8 GB | 100/16 | 1600 | 32063 | 3093 | 16721 | 514 | 974 | 1879 | 3047 | 28063 |
このトピックでは、標準 SSD を使用するインスタンスのテスト結果を示しています。Ultra ディスクも高い IOPS を提供します。データ量とインスタンスの仕様が小さい場合、Ultra ディスクのパフォーマンスへの影響は、SSD のパフォーマンスへの影響に近くなります。ストレージはもはやパフォーマンスのボトルネックではありません。したがって、テストでは Ultra ディスクは使用されません。ビジネスシナリオに基づいてシミュレートされたワークロードを使用すると、より正確な結果を得ることができます。アプリケーションの影響も考慮する必要があります。たとえば、Java クライアントの GC(ガベージコレクション)メカニズムにより、レイテンシが増加する可能性があります。