#サバフェス に参加してきました (前半戦)

November 26, 2013

#サバフェス という サーバチューニングの大会に参加しました。今回も学生枠があったのでその枠で申し込みました。

サバフェスは、簡単に言うと「一週間頑張ってサーバを高速化して大量のアクセスをさばいてね。ソースはいじっちゃダメだよ (^_^)」という大会です。渡されるサーバは5台。自由に構築して頑張ってくれーという感じです。ちなみに、優勝したら20万円もらえます。今回はもらえそうにないです。調布焼肉部のみなさま、すみませんでした。

大会参加までの流れ (1〜2日目)

このイベントの存在を知ったのは、ISUCON で惨敗した直後でした。 また負けに行くのか、、とも思いましたが、叩かれて伸びるタイプだと自分を言い聞かせながら申し込んでみました。 補欠枠だったので参加資格ないだろうなーと思っていたら、大会が始まって二日目の夕方にこんなリプが飛んできました。

まさか参加することになるとは、、、 ということで慌ててユーザ登録をしました。その日は飲み会があったので登録して終わり。

大会3日目 (11/20 Wed)

個人的には1日目ですが、気持ちを切り替えてスタート。チュートリアル通りに進めればよかったんですが、好き勝手に構築してしまいました。。そのため、運営側が用意したWordPress のソースコードの確認時、md5sum が一致しないという問題が発生!uid, gid が 501 じゃないとダメなのかな?csf ユーザの uid, gid を更新して問題を解決しました。

その後もチュートリアルを読み飛ばしたせいで、「接続先のDBを切り替えたいから wp-config.php を変更していいか」などという不毛な質問をしてしまいました。。 この件は、事前に配布されたチュートリアルに明記されてたんですよね。。。

サバフェスの公式アカウントにtwitter で質問したところ、馬場さんからリプが飛んできて目が覚めましたw

サバフェスさんからもご指摘頂きました。。対応があたたかかった。

そのあとは、特に問題なくサクサク構築していきました。使ったミドルウェアは以下の通り。

  • Keepalived
  • MySQL
  • Nginx
  • Redis
  • php-fpm

とりあえず、フロントの1台を構築し初期ベンチを取りました。MySQL は 5.6 に、他のものも公式サイトの最新安定版をソースからコンパイル。 今回こそ、Nginx に Lua モジュール を入れて Redis をゴリゴリやるチャンスだ!とか思って使えそうなモジュールはたくさんいれました。

上記のミドルウェアは、今まで何度も構築・設定したことがあるのであまり時間をかけずにできました。 プライベートの経験が活きた感じ。Topotal Project に感謝。 それと、好きなタイミングでベンチマークを走らせることができないため、 モニタリングツール (cacti)を入れて、リソースを後から終えるようにしました。 ここらへんの詳細は後半戦に書きたいと思います。

次に、アクセスログ解析をしてみる。GET が1分間、POSTが2分間くる感じ。 ベンチマークツールの詳細は闇に包まれていたので、その謎解きに入りました。

レスポンスチェックしてるのかなーと思って、ちょっとずつレスポンスをアレな感じに変えていきました。

フッターの内容が異なるキャッシュを返す -> OK 長い文章を消してそれをRedis にいれる。Nginx からそれをそのまま返す -> OK コンテンツなんか返さない。ステータスコード200 だけ返す -> OK…

え!!!!

ということで POST もreturn 302; にして(本来であれば、投稿したコメントを表示するためにリダイレクト処理が行われます。)、ベンチマークが Fail することを祈りながら(?)その日は寝ました。

大会4日目 (11/21 Thu)

起きてリザルトサイトを確認すると。。。

c6b15ebc1380a568f7b54ecae8b0ea34

そこには爛爛と1位に君臨するあの顔文字が w これ以上のスコアが出ないため、ある意味手詰まり。

このへんで、本大会の雲行きが全体的に怪しくなってきてしまい、やる気もどんどんなくなってる感じでした。

それを見かねてか、公式アカウントからベンチマークシステム変更のアナウンスが流れました。

変更内容としては以下のとおり。

  1. POSTがコメントとして記入されているチェックを毎回実行する
  2. チェックの方法は、POSTの成功数とPOSTによって書き込まれたコメント増加数のうち、どちらか少ない方がスコアになる

また、人力でPOSTができているか、POSTにより更新されるべき箇所が正常に更新されているかを確認するようになりました。

これには大賛成。やっぱりそうあるべきだよね。本大会の本番は、レギュレーション が一通り FIX した 5日目以降だったように思います。 ということでここまでを前半戦としたいと思います。

後半戦に続く。


Profile picture

Written by Narimichi Takamura (@nari_ex) who works at Topotal as CEO. He love engineering and fighting game.