#サバフェス という サーバチューニングの大会に参加しました。今回も学生枠があったのでその枠で申し込みました。
サバフェスは、簡単に言うと「一週間頑張ってサーバを高速化して大量のアクセスをさばいてね。ソースはいじっちゃダメだよ (^_^)」という大会です。渡されるサーバは5台。自由に構築して頑張ってくれーという感じです。ちなみに、優勝したら20万円もらえます。今回はもらえそうにないです。調布焼肉部のみなさま、すみませんでした。
大会参加までの流れ (1〜2日目)
このイベントの存在を知ったのは、ISUCON で惨敗した直後でした。 また負けに行くのか、、とも思いましたが、叩かれて伸びるタイプだと自分を言い聞かせながら申し込んでみました。 補欠枠だったので参加資格ないだろうなーと思っていたら、大会が始まって二日目の夕方にこんなリプが飛んできました。
@nari_ex 突然すみません。サバフェス実行委員です。昨日、サバフェス用の認証コードを送りましたが確認いただけましたでしょうか。期限が本日16時までとなっております!ぜひご登録お願いします。
— サバフェス! (@svfes) November 19, 2013
まさか参加することになるとは、、、 ということで慌ててユーザ登録をしました。その日は飲み会があったので登録して終わり。
大会3日目 (11/20 Wed)
個人的には1日目ですが、気持ちを切り替えてスタート。チュートリアル通りに進めればよかったんですが、好き勝手に構築してしまいました。。そのため、運営側が用意したWordPress のソースコードの確認時、md5sum が一致しないという問題が発生!uid, gid が 501 じゃないとダメなのかな?csf ユーザの uid, gid を更新して問題を解決しました。
その後もチュートリアルを読み飛ばしたせいで、「接続先のDBを切り替えたいから wp-config.php を変更していいか」などという不毛な質問をしてしまいました。。 この件は、事前に配布されたチュートリアルに明記されてたんですよね。。。
サバフェスの公式アカウントにtwitter で質問したところ、馬場さんからリプが飛んできて目が覚めましたw
@nari_ex チュートリアル読むんだ! /home/csf/.wordpress で変えられるよ
— ばば としあき (@netmarkjp) November 20, 2013
サバフェスさんからもご指摘頂きました。。対応があたたかかった。
@nari_ex OKです。メールでお送りした資料の66Pの「.wordpress」編集にある「localhost」を書き換えてください。#サバフェス
— サバフェス! (@svfes) November 20, 2013
そのあとは、特に問題なくサクサク構築していきました。使ったミドルウェアは以下の通り。
- Keepalived
- MySQL
- Nginx
- Redis
- php-fpm
とりあえず、フロントの1台を構築し初期ベンチを取りました。MySQL は 5.6 に、他のものも公式サイトの最新安定版をソースからコンパイル。 今回こそ、Nginx に Lua モジュール を入れて Redis をゴリゴリやるチャンスだ!とか思って使えそうなモジュールはたくさんいれました。
上記のミドルウェアは、今まで何度も構築・設定したことがあるのであまり時間をかけずにできました。 プライベートの経験が活きた感じ。Topotal Project に感謝。 それと、好きなタイミングでベンチマークを走らせることができないため、 モニタリングツール (cacti)を入れて、リソースを後から終えるようにしました。 ここらへんの詳細は後半戦に書きたいと思います。
次に、アクセスログ解析をしてみる。GET が1分間、POSTが2分間くる感じ。 ベンチマークツールの詳細は闇に包まれていたので、その謎解きに入りました。
今回はベンチマークツールの詳細はヒミツですので、アクセスログから予測してみてください!途中で負荷パターンの変更はしませんのでそこはご安心を! RT @y0t4: ベンチマークツールの公開とか予定されてたりするんでしょうか? #サバフェス
— サバフェス! (@svfes) November 18, 2013
レスポンスチェックしてるのかなーと思って、ちょっとずつレスポンスをアレな感じに変えていきました。
フッターの内容が異なるキャッシュを返す -> OK 長い文章を消してそれをRedis にいれる。Nginx からそれをそのまま返す -> OK コンテンツなんか返さない。ステータスコード200 だけ返す -> OK…
え!!!!
ということで POST もreturn 302; にして(本来であれば、投稿したコメントを表示するためにリダイレクト処理が行われます。)、ベンチマークが Fail することを祈りながら(?)その日は寝ました。
大会4日目 (11/21 Thu)
起きてリザルトサイトを確認すると。。。
そこには爛爛と1位に君臨するあの顔文字が w これ以上のスコアが出ないため、ある意味手詰まり。
なんか #サバフェス が最速echoシステム決定戦になってる気がするが大丈夫か?w
— ばば としあき (@netmarkjp) November 20, 2013
このへんで、本大会の雲行きが全体的に怪しくなってきてしまい、やる気もどんどんなくなってる感じでした。
それを見かねてか、公式アカウントからベンチマークシステム変更のアナウンスが流れました。
先ほどもお伝えした通り、ベンチマークを再開しました!ベンチマークシステムの修正の内容と、今後の公開の流れについて、記載しました。 http://t.co/CYQ3zuYrjQ #サバフェス
— サバフェス! (@svfes) November 21, 2013
変更内容としては以下のとおり。
- POSTがコメントとして記入されているチェックを毎回実行する
- チェックの方法は、POSTの成功数とPOSTによって書き込まれたコメント増加数のうち、どちらか少ない方がスコアになる
また、人力でPOSTができているか、POSTにより更新されるべき箇所が正常に更新されているかを確認するようになりました。
@nari_ex POSTの結果として反映されるべき個所については全て確認します!#サバフェス
— サバフェス! (@svfes) November 21, 2013
これには大賛成。やっぱりそうあるべきだよね。本大会の本番は、レギュレーション が一通り FIX した 5日目以降だったように思います。 ということでここまでを前半戦としたいと思います。
後半戦に続く。