2時間半の限られた中で
ここ数年、日本のエンジニア界隈でもハッカソンと呼ばれるプログラミングイベントが流行っています。これは「Hack」と「Marathon」を合わせた造語で、米国で1999年あたりから使われ出したそうです。
このコンセプトをヒントに、「 Hack」ではなく「Tuning」をテーマに、インフラエンジニアを対象としたイベント、「 チューニンガソン」が7月9日に開催されました。
会場となったECナビオフィス内「パンゲア」
このイベントは、アプリケーションレイヤではなく、WebサーバおよびDB(データベース)の設定を編集するなどして、いかに優れたパフォーマンスを出せるかを目的としており、開催当日までお題は発表されませんでした。
そして、イベント当日に発表されたお題は以下の通り。
WordPressのコメント書き込み回数
20並列で1,000回実行にかかる時間
参加者に提供される環境は、
AWS ap-northeast-1
midium instance
Amazon Linux 2011-02
WordPress 3.1.4ja(/var/www/html/wordpress)
となっていて、
Apacheをフロントにすること
データベースはMySQL
/var/www/html/wordpress以下の改変はNG
Apache、MySQL、PHPの入れ替えはOK
という条件で行われました。
たとえば、各サーバソフトウェアをソースからコンパイルしてチューニングするといったことは可能ですが、WordPressの設定変更やWordPressの実行を短縮するなど、プラグインなどの利用はNGという形で、サーバ/インフラ側の「設定」のノウハウが対象である条件となっています。
実際の計測は、abコマンドを利用して行われました。
参加者39名、32チームによるチューニングバトル
今回の企画メンバーの一人でもある株式会社ゼロスタートコミュニケーションズ 代表取締役社長 山崎徳之(@zaki )氏から、条件や注意事項の説明が終わると同時に、参加チームにIPアドレスが割り振られ、チューニンガソンがスタートしました。
「インフラエンジニアのスキルアップ、そして、何よりインフラエンジニアの地位向上につながれば」と話した山崎氏
参加者たちは、テーブルでチューニングしたり、床に寝転がってチューニングしたりと、それぞれがチューニングしやすいスタイルで、ガリガリと、また、ときには周りの人の様子も伺いながら、1秒でも早いパフォーマンスを目指していました。
皆、それぞれのスタイルで、集中してチューニングを行った。ちょうどこの日は関東地方の梅雨が明け、外の暑さにも負けないぐらいの“ 熱い” バトルが行われた
また、バトル中までの様子は、株式会社ゼロスタートコミュニケーションズの広報ブログにも掲載されていますので、合わせてご覧ください。
【前編:バトル!】いろいろチューニングしてパフォーマンスを競うバトルイベント!「Tuningathon」 #tuningathon
http://pr.zero-start.jp/archives/65588426.html
優勝は@methane氏、PHP5.4が勝利のポイント!
2時間半経過後、チューニングタイムが終了し、山崎氏による計測が始まりました。今回、「 20並列で1,000回実行にかかる時間」としていましたが、計測時間などの関係から、500回実行の計測を2回行い、より良い数字を計測タイムとしてカウントしました。
優勝は@methane氏、唯一の22秒台。トップ3のみ25秒を切る
いよいよ結果発表です。
優勝は、唯一の22秒台を計測したmethane(http://twitter.com/methane)氏。下表 の結果を見てもわかるように、頭ひとつ優れたパフォーマンスを計測しました。また、2、3位も24秒台と、トップ3のチームは、とくに優れたチューニングを行えたと言えるでしょう。
表 トップ10のチームと計測タイム
1位、methane氏
2位、toshiak_netmark氏
3位、yamaji・tottokugチーム
4位、jun_kanzaki・nntatanoチーム
5位、kazuho氏
6位、goodoo氏
7位、riywo氏
8位、najeira氏
9位、kamipo氏
10位、Ryoutarou Setou氏
APCによるチューニングやPHP自体の再コンパイル
結果発表のあと、各チームからのチューニングのポイント、また、司会進行の山崎氏、クラウドスポンサーAmazon Data Services Japan K.K.の玉川憲 氏からの公表が行われました。
優勝したmethane氏は、 ボトルネックの確認をした上で、ちょうど直前に仕入れた情報の「PHP5.4」を導入することを決めたそうで、phpinfoに記載されているconfigureオプションをベースにビルドして入れ替えたとのこと。結果的に、このチューニングはかなり効果があったようです。その他、perfを活用して数値をチェックしながら調整するなど、PHPの入れ替え以外にも細やかなチューニングを施していました。
2位のtoshiak_netmark氏は、最初Apacheを触りながらプロセス数を20に絞るなどをしたそうですが、あまり効果がなかったそうです。そこで、PHPのリコンパイルをした上で、自身の経験に基づいてApache+Nginx+php-fpmの3段構成を採用しました。その結果、CPUを使い切ることができ、早い秒数を計測できたとのこと。
3位のyamaji、tottokugチームは、チームという利点を活かし、それぞれでチューニング範囲を決めながら進めていたそうです。ただ、それよりも大きかったのが、あらかじめAmazon Linuxに向けた主要な言語・ソフトウェアのビルドパッケージを用意していた点。結果的に、他チームに比べてビルド時間を短縮できるという、事前準備が功を奏した結果となりました。
その他、各チームとも、APC(Alternative PHP Cache)を利用したキャッシュの高速化、PHPのリビルドといったアプローチが見られました。一方で、皆、CPUが1つという条件に対してボトルネックの解消に頭を悩ませていたという声が多数聞こえました。
また、チート(ズル)をしたチームもあり、そのチームは失格となりました。
バトル終了後、参加者自身からのコメントも。
限定された条件の中で「サービス」として提供することの重要性
講評時、山崎氏は、「 今回は、あえてWordPressというアプリケーションを使い、その下で動く、OS、サーバソフトウェアだけでどこまでチューニングできるかを競ってもらいました。アプリケーション側のチューニングも大切ではありますが、実際にWebサービスを提供するときには、インフラ側のチューニングが必要です。ですから、チューニンガソンでは、単なる技術バトルではなく、実際にWebサービスを提供することを想定して競える課題を出したのです」と、イベントのコンセプトを改めて説明するとともに、腕自慢を目指すのではなく、実用途にも耐えうるスキルの習得の大切さを強く訴えました。
また、クラウドスポンサーのAmazon Data Services Japan K.K.玉川氏は、「 今回、たくさんのエンジニアの方たちが実際にチューニングする場を見ることができたのは、提供側の私たちとしても大変参考になりました。結果からAmazon Linuxの課題なども伺うことができました。今後はその点もブラッシュアップしていきたいです。それから、今後の開催では、たとえば1インスタンスではなく、金額の上限設定をして、その中で、コストも意識した最適なパフォーマンスチューニングといったバトルも見てみたいですね」と、この先の展開に期待するコメントとともに講評を終えました。
講評をするAmazon Data Services Japan K.K.玉川氏
講評のあとは、同オフィス内「Ajito」に場所を移し、参加者による懇親会も行われました。
参加者同士、それぞれのチューニングのポイントを共有するなど、お酒とともに技術談義に華が咲きました。
特別ゲストにリスも登場!
今後のチューニンガソンにも期待!
以上、第1回となるチューニンガソンが終了しました。日本国内でもさまざまなWebサービスが登場し、ユーザにとってもより身近になってきています。それらを支えるエンジニアたちが腕を競い、そして、さらなるサービス向上につながる場として、「 チューニンガソン」の役割は大きいと感じます。
今後、第2回、第3回と続いて、エンジニアたちのスキルアップとともに、日本のIT/Web業界の発展につながることを願っています。