第4弾 チューニンガソンに参加してきた

7/1(日)、ゼロスタートさんの主催するインフラチューニングのイベント「チューニンガソン」に参加してきました。
チューニンガソンとは、アプリ以外のインフラ部分だけをチューニングしてレスポンス速度を競うバトルです。


結果的にはとりあえず、7位に入賞することができました。

今回のお題は?

お題はバトル開始直前に発表されます。今回はAWSにインストールされた"refinery"というRuby on Railsで書かれた
CMSのレスポンスを競うというものでした。

バトル条件
  • RoR refineryのコメントPOST/GET回数
  • 10並列で一定秒数間測定
  • 秒間平均POST/GET回数がスコア
  • エラー返却は単純に除外
  • POSTはGETの10倍のスコア
  • POST後のGETによる反映チェック
  • 反映チェックの成功率の二乗をスコアに乗算

早速チューニング開始

正直なところ、RoRなんてRedmineの構築程度しか触ったことが無かったため何をチューニングすれば良いか
さっぱり検討もつかず、途方にくれつつのチューニングとなりました。
ありがたいことに、当日の持ち物に「諦めない気持ち」が入っていたためなんとか乗り切ることができましたw

チューニング内容


REE(Ruby Enterprise Editon)の導入については、Redmineインストール時にREEを利用した方が効率的との
記事をみていたため、早速導入してみました。
http://blog.redmine.jp/articles/redmine-2_0-installation_centos/:titile
http://hiroki.jp/2011/01/09/1374/
もちろん、最新版Rubyの導入を検討しなかった訳ではないのですが、gemとライブラリのバージョン問題に
悩まされたくなかったので、チューニング環境と同バージョンであるREEを選択した訳です。

結果として、若干スコアの向上が見受けられました。
また、mysqldのreniceについては前回のチューニンガソンで効果が得られるとのことで、おまじない的に
採用してみました。効果的にはあったのか無かったのかいまいち判断できず。

Passenger導入でスコアが劇的に変化

上記チューニングで、多少の効果はみられましたがその後は頭打ち。

チューニング開始前

Score: 2.483 (get=1.400, comment=1.083(2), check=1.000)

REE+mysqldのrenice後
Score: 3.483 (get=1.900, comment=1.583(2), check=1.000)

とりあえず、修正可能なRoRの設定ファイルでのチューニングを試みましたが、にわか知識では
チューニング方法がいまいち理解できず、足止め状態になってしまいました。

公式計測開始まであと20分と差し迫ってきたため、とりあえずPassengerを導入。
計測してみると、Scoreがだいたい13〜15をキープするようになりました。

公式計測では、予想以上に高く「17.41」。
わからないながらのチューニングでしたが、本当に運が良かったです。

上位入賞者との比較。

今回のイベントで、1位・2位をとられた方々は堂々の4桁スコア。
チューニング内容を伺うと、varnishを利用されたとか。
HTTPアクセラレータの存在は偉大だと実感しました。

今回利用したAMI(Amazon Machine Image)が公開されているそうですので、
時間を見つけてvarnishも試してみたいと思います。

ami-64145536

最後に

こんな面白いイベント、末永く続けていただきたいです。

  • 会場を提供くださった、VOYAGE GROUPさん
  • AWSの提供をして頂いているAmazonさん、
  • 取材にいらした技術評論社さん
  • 運営をして頂いているゼロスタートさん

今後ともよろしくお願いいたしますm(_ _)m