今回の​ISUCON3本戦で​我々は,​いや,​今回も​...くっ...なんの​成果も​!!得られませんでした​!! #isucon

Posted on | 2378 words | ~5mins
isucon

# タイトルは​ネタです1.​タイトルには​若干語弊が​あって,​実際は​とても​よい​経験を​させていただけたので​それだけでも​十分"成果"は​ありました.​実力不足で​"結果​"が​出せなかっただけです.

@yunazuno​@nerbaraki_m2とともに,​ISUCONの​予選に​学生枠で​参加して​惨敗した​話を​前に​[書いた​]({{ root_url }}/blog/2013/10/07/participation-of-the-isucon3-preliminary/)のですが,​上位の​チームが​再現確認で​Failしたようで​学生枠繰り​上がりで​本戦に​出場できてしまいました.

予選が​終わった​あとに,​楽しかったしスコア伸ばせなかったのも​悔しさしか​ないし,​本戦も​出場したかった​ナーなどと​3人で​ほざいてたら​現実に​なりました.

前日までにやったこと

僕は​Fluentd + ElasticSerch + Kibana3で​Nginxの​アクセスログや​WebAppの​プロファイリング結果を​集計して​可視化できるように​EC2に​インスタンスつくって​準備したりしてました.​詳しくは​下の​エントリに​あります(宣伝).

  • [Fluentd + ElasticSearch + Kibana3で簡単に様々なログを可視化・解析する]({{ root_url }}//blog/2013/11/11/logging-system-with-fluentd-elasticsearch-kibana3/)
  • [WerkzeugでFlaskを使ったPythonのWebAppをプロファイリングする]({{ root_url }}/blog/2013/11/12/werkzeug-wsgi-application-profiler/)
  • Fluent-plugin-werkzeug-profilerを書いた

余談ですが,​僕らは​奈良から​遠征だったので​ホテルを​とろうとした​ところ,​いつも以上に​渋谷周辺の​ホテルが​埋まってる​気が​しました.​他にもなにかイベントが​あったりしたのでしょうか?

当日やったこと

本戦は​予選TOP20組と​学生枠3組,​選抜2組の​25組だったのですが,​9:50くらいに​ヒカリエ11階に​いったらすでに​かなりの​人数の​参加者が​揃っていました.​エンジニアは​朝弱いと​いうのは​迷信だったか…

本戦が​始まるまで​それなりに​時間が​あったのですが,​あまりやれる​こともなく​適当に​参考に​なりそうな​記事を​読み返したりしてました.

運営の​方の​挨拶と​オープニングムービー.​ムービーは​しっかり​作って​あって​面白かったですwお題は​画像を​使った​Twitter的な​サービス.​サーバは​5台を​好きなように​使える.

とりあえず​最初は​必要な​ツールを​入れたり,​バックアップとったり,​Supervisorで​Pythonの​WebAppが​あがるように​設定したりした.​ひと​まずベンチを​回してみると​下のような​感じの​メッセージを​吐いて​Score:724.1の​Fail.

2013-11-09T12:00:00 [13552] [CRITICAL] status: 500 INTERNAL SERVER ERROR
2013-11-09T12:00:00 [13552] [CRITICAL] POST http://125.6.152.4:8022/icon
2013-11-09T12:00:00 [13552] [CRITICAL] request http://125.6.152.4:8022/icon failed 500 INTERNAL SERVER ERROR
2013-11-09T12:00:26 [13549] [CRITICAL] status: 500 INTERNAL SERVER ERROR
2013-11-09T12:00:26 [13549] [CRITICAL] POST http://125.6.152.4:8022/icon
2013-11-09T12:00:26 [13549] [CRITICAL] request http://125.6.152.4:8022/icon failed 500 INTERNAL SERVER ERROR

デフォルトの​状態で​なんで​動かないんだーと​悩み続ける​事に​なります…

とりあえず​落ち着こうと​早々に​昼食.​とっても​美味しかったです.

そして​実は​当日の​朝に​フィンランドから​帰国した​@yunazunoが​関​空​経由で​会場に​到着w疲れていると​こ頑張って​来て​もらって​若干申し訳なかったですね.

WebAppの​改善を​始めていましたが,​未だデフォルトの​状態で​動かないの​なんなんじゃーと​それからも​悩んでいました.​結論を​いうと,​ブラウザで​開いていた​ページを​閉じたら​ベンチ通りました.​しょうもなさすぎて​涙目.

WebAppは​サブプロセスで​ImageMagickを​よんでる​ところを​ライブラリを​使うようにしました.

すると​次は​こんな​エラーに​悩むことに.

2013-11-09T17:32:25 [64799] [CRITICAL] http://125.6.152.4:8022/icon/9c27bebb6d43c722058cf02abfcdac7ef5e1ba203e176bc928ccb43a24a97911 status failed got: 596 expected: 200
2013-11-09T17:32:25 [64799] [CRITICAL] http://125.6.152.4:8022/image/e4eae20b3af5aee0a74c7a7c2e7ad866c4a898f6df72f7ccdbb305a96ca42f2a?size=s status failed got: 596 expected: 200
2013-11-09T17:32:25 [64799] [CRITICAL] http://125.6.152.4:8022/icon/566c02e3784d6a62fe801524b4a2a6dd928660c9378501139b77233bc256ad2b status failed got: 596 expected: 200

Code:596って​なんや​ねんって​感じだったんですが,​REST APIの​エンドポイントが​見つからないって​エラーなんですね.​エラーが​出てる​URLを​叩くと​普通に​画像が​表示されてなんや​ねん〜って​感じでした.

この​件は​散々​悩んだ​挙句,​えいやで​ベンチマークの​workloadを​あげてみたら​解決しました.​理由は​未だに​理解できてません.わけが​わからないよ…

そして​最後は​Iconの​Diffエラー…

2013-11-09T17:32:11 [64802] [CRITICAL] icon diff > 20% http://125.6.152.4:8022/icon/f101c904d7c8055371a6738ea78322ab600647d92b63d786e15939e4e7464a60

これを​解決する​ことなく​タイムアップで​僕らの​ISUCON3本戦は​終わったのでした…

結果は​もちろんFail.​僕らに​人権は​ない.

懇親会は​DATAHOTELさんに​ピザや​KFCを​ごちそうになりました.​ごちそうさまでした!

感想

高速化を​ほとんどやる​ことなく​終わってしまったので​予選よりも​悔しかったですね.​悔しすぎて​この​日の​夜は​ビール3.5Lくらい​飲みました.​学生枠で​優勝して​交通費の​足しに​するなど夢の​また​夢だった.

優勝した​LINE選抜チームさんは​流石と​いった​感じでした.​ベンチが​ラウンドロビンで​負荷を​かける​設定だったので,​フロントに​複数サーバを​置くのは​なんとなく​想像出来ましたが,​フロント4台+バックに​App1台(間違えていたのを​訂正していただきました​ありがとう​ございます)と​いう​構成は​聞いててなる​ほどなーと​思いました.​複数サーバの​適切な​使い方が​思いつかない​あたり,やはり​実務経験が​足りない.

このような​素晴らしい​イベントに​僕らのような​学生にも​参加する​チャンスを​与えてくださった​事に​大変感謝しています.​LINEさん,​カヤックさん,​DATAHOTELさんなど​運営に​関わった​皆​様​ありがとう​ございました.​来年は​社会人枠で​参加して​優勝を​目指します!

# 明日の​ISUCON3反省会参加したかったけど,​距離的に​参加は​難しいので​1人で​プレモル飲んで​反省会します.


  1. 進撃の​巨人ネタですので​旬過ぎてる​感 ↩︎