Amazon EC2 (Asia Pacific 東京)でm1.large を利用して、Cassandra 0.7.4のストレステストを試す。
前回、マイクロ インスタンスを利用して、Cassandra 0.7.4のストレステストを試してみました。あまり期待した結果がでなかった
為、今回は、ラージ インスタンスで試してみたいと思います。スモール インスタンスも検討したのですが、32bitしか
サポートしていなかった為、64bitサポートがあるラージ インスタンスにしてみました。
前回の補足で、swap領域を追加してみる
swap領域が無かった為、物理メモリの上限を超えたあたりで、ストレステストのプログラムをkillされて
しまったが、swap領域を新たに確保し、t1.microとm1.largeでストレステストを実施してみた。
m1.largeにおいて、確保したswap領域は、以下の通りです。t1.microに関しては、1G程増やして
試してみました。
$dd if=/dev/zero of=/swap bs=1G count=2 2+0 records in 2+0 records out 2147483648 bytes (2.1 GB) copied, 5.03326 seconds, 427 MB/s $mkswap /swap Setting up swapspace version 1, size = 2147479 kB $swapon /swap $swapon -s Filename Type Size Used Priority /swap file 2097144 0 -1 $cat /proc/swaps Filename Type Size Used Priority /swap file 2097144 0 -1 $free -m total used free shared buffers cached Mem: 7680 2315 5364 0 5 2082 -/+ buffers/cache: 226 7453 Swap: 2047 0 2047
ストレステスト実施中のOSリソースの確認は、sarコマンドで行いました。
m1.largeにおける実施内容は、下記のような感じでした。t1.microでは、OOM Killerは
起こらなかった物のstealが常に100%近くなり、ストレステスト自体がなかなか終わりませんでした。
17時08分54秒 CPU %user %nice %system %iowait %steal %idle 17時08分55秒 all 2.99 0.00 0.50 0.00 0.50 96.02 17時08分56秒 all 1.01 0.00 0.00 0.00 0.00 98.99 17時08分57秒 all 1.00 0.00 0.50 0.00 0.00 98.51 17時08分58秒 all 5.05 0.00 0.00 0.00 0.00 94.95 17時08分59秒 all 0.51 0.00 0.00 0.00 0.00 99.49 17時09分00秒 all 0.99 0.00 0.00 0.00 0.00 99.01 17時09分01秒 all 0.49 0.00 0.49 0.00 0.00 99.01 17時09分02秒 all 0.50 0.00 0.00 0.00 0.50 99.01 17時09分03秒 all 0.51 0.00 0.00 0.00 0.00 99.49 17時09分04秒 all 0.49 0.00 0.49 0.00 0.00 99.01 17時09分26秒 all 0.00 0.00 0.00 0.00 0.00 100.00 17時09分27秒 all 0.00 0.00 0.00 0.00 0.00 100.00 17時09分28秒 all 0.50 0.00 0.00 0.00 0.00 99.50 17時09分29秒 all 5.00 0.00 0.00 0.00 0.00 95.00 17時09分30秒 all 1.00 0.00 0.50 0.00 0.00 98.51 17時09分31秒 all 3.43 0.00 0.49 0.00 0.00 96.08 17時09分32秒 all 11.62 0.00 0.00 0.00 0.51 87.88 17時09分33秒 all 0.50 0.00 0.00 0.00 0.00 99.50 17時09分34秒 all 1.99 0.00 0.50 0.00 0.00 97.51
Cassandra 0.7.4のストレステストプログラムのコンパイル
apache-cassandra-0.7.4-srcをダウンロードし展開すると、「contrib/stress」というディレクトリがあります。
この中に、javaで書かれたストレスプログラムがあります。ちなみに「contrib/py_stress」というPython版も
あります。
javaとantが利用できることを確認します。
$java -version java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) $ant -version Apache Ant(TM) version 1.8.2 compiled on December 20 2010
antタスクを実行します。
ant Buildfile: /usr/local/apache-cassandra-0.7.4-src/contrib/stress/build.xml init: build: [javac] /usr/local/apache-cassandra-0.7.4-src/contrib/stress/build.xml:34: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds BUILD SUCCESSFUL Total time: 0 seconds
コンパイルが成功したらjarファイルを作成します。
ant jar Buildfile: /usr/local/apache-cassandra-0.7.4-src/contrib/stress/build.xml init: build: [javac] /usr/local/apache-cassandra-0.7.4-src/contrib/stress/build.xml:34: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds jar: BUILD SUCCESSFUL Total time: 0 seconds ls ./build classes stress.jar
buildディレクト配下に、stress.jarができました。
stress.jarをクラスパスに設定してストレステストプログラムを実行します。
contrib/stress/bin/stress -d xxx.xxx.xxx.xxx や contrib/stress/bin/stress -d xxx.xxx.xxx.xxx -o read --num-keys=500000 contrib/stress/bin/stress -d 59.106.185.203 -n 5000000
といった使い方ができるみたいです。