(Google+)117117件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。訓練されたアップル信者、都元です。RDSの性能を測定してみました。このエントリーの初期版では、クライアントのEC2インスタンスサイズをsmallにしていましたが、クライアント側がボトルネックにならないよう、m3.2xlargeで再測定しています。測定回数(iterations)も、初期版では1でしたが、現在は10回の平均を取った数値で再測定しています。いった差別化がはかられています。いうことでmysqlslapというMySQL標準のユーティリティを使って測ってみました。性能試験用RDSとテスト用サーバの起動まず、測定用のRDSを用意します。コピペで再現性のあるインスタンス起動ができるよう、コマンドラインにて。10000IOPSの4つを測定対象としました。cm-test-4xlarge-iops10000しばらく待つとステータスがavailableとなりますので、ホスト名を確認しましょう。これらのDBに対して、クライアント端末からテストをしても良いのですが、通信回線のオーバーヘッドが影響してしまうので、RDSとは別にEC2インスタンスを同じAZ(ap-northeast-1c)に立てて、そこからテストすることにします。EC2側のボトルネックを最小限にするため、m3.2xlarge(m3の最大級クラス)を贅沢に使ってみました。先ほど作成したDBインスタンスはdefaultのセキュリティグループに属しているため、このテスト用EC2インスタンスからこれらのRDSのMySQLにアクセスできるように設定の調整を行ってください。mysqlslapの実行テスト用のEC2にログインし、まずはMySQLのクライアントをインストールします。これでmysqlslapが使えるようになります。mysql(おおぅ、いつもt1.microでyumを使って何かをインストールする時と、スピード感が違います。恐るべしm3.2xlarge。)mysqlslapについてはココ(v5.1の日本語版ドキュメント)とかココ(v5.5の英語版ドキュメント)を参照してください。要するに、指定したMySQLに様々なクエリを大量に投げて、その実行に掛かった時間を測定するツールです。コマンドはこんな感じ。--iterations=10このコマンドでは、指定したMySQLインスタンスに対して、innodbでテーブルを作成します。autoincrementのカラムを1つ作り、VARCHAR型のカラムを3つ、INT型のカラムを5つ作ります。この辺りはなんとなく適当に決めました。このテーブルに対して1万回のクエリを3つのスレッドから投げます。1スレッドにつき約3333回のクエリを投げる感じです。これを--iterations=10という指定により、10回同じテストを繰り返し、平均値をとります。(scan)を行う性能試験です。(scanとinsertのハイブリッド)が選択できます。