ablog

不器用で落着きのない技術者のメモ

Amazon Keyspaces の Auto Scaling でスケールアウトするまでの所要時間

Amazon Keyspaces の Auto Scaling でスケールアウトするまでの所要時間を実測してみた。
キャパシティモードがプロビジョンドのテーブル最小 RCU/WCU: 2000、最大 RCU/WCU: 20,000、目標使用率: 70% に対して、YCSB から負荷をかけてみて、3〜4分程度でAuto Scaling が発動した。

検証結果

  • プロビジョンしたキャパシティを超えて3〜4分程度で Auto Scaling が発動し、そこから4分程度でスケールアウトがスループットに追いついている。


前提

Amazon Keyspaces
  • テーブルを作成する
$ cqlsh cassandra.ap-northeast-1.amazonaws.com 9142 --ssl
cqlsh> create keyspace ycsb
    WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 3 };
cqlsh> USE ycsb;
cqlsh> create table 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,000
      • 最大キャパシティユニット: 20,000
      • 目標使用率(%): 70
    • 書き込みキャパシティー

EC2 から YCSB で負荷をかける
  • EC2
  • ~/YCSB/workloads/workloadb_keyspaces
recordcount=100000
operationcount=1000000
workload=site.ycsb.workloads.CoreWorkload

readallfields=true

readproportion=0.95
updateproportion=0.05
scanproportion=0
insertproportion=0

requestdistribution=uniform
  • データをロードする
$ cd ~/YCSB/ 
$ ./bin/ycsb load cassandra-cql -p hosts=cassandra.ap-northeast-1.amazonaws.com -p port=9142 -P ./workloads/workloada_keyspaces -s \
-threads 8 -p cassandra.writeconsistencylevel=LOCAL_QUORUM -p cassandra.ssl=true \
-jvm-args=" -Djavax.net.ssl.trustStore=/home/ec2-user/.cassandra/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=amazon"
  • 負荷をかける
$ cd ~/YCSB/ 
$ ./bin/ycsb run cassandra-cql -p hosts=cassandra.ap-northeast-1.amazonaws.com -p port=9142 -P ./workloads/workloada_keyspaces -s \
-threads 100 -p cassandra.writeconsistencylevel=LOCAL_QUORUM -p cassandra.ssl=true \
-p cassandra.coreconnections=100 -p cassandra.maxconnections=100 \
-jvm-args=" -Djavax.net.ssl.trustStore=/home/ec2-user/.cassandra/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=amazon"