dshimizu/blog

アルファ版

ISUCON7予選振り返り

ISUCONに初参加しました。

結果はタイトル通り予選敗退だったのですが振り返りとしてメモしておきます。

振り返り

アプリケーションはチャットアプリケーションで、ISUCON初の3台のサーバでアプリケーションやDBを動かせる状態(3台を自由に使って良い)の複数台構成でした。またサーバ間のローカル通信の帯域が500Mbps、外部からのベンチマークツールとの通信に使われる帯域が100Mbpsに制限されているというのもこれまでと違う点でした。ミドルウェアは、WebサーバはNginx、DBはMySQLとメジャーどころでしたが、fail2banが入っていて最初にログイン不能になって焦りました。

結果的には、複数台構成において、DBに保存されていたチャットのアイコン画像をファイルに吐き出し、その後に静的コンテンツとしてNginxで304で返すための対応を最後までうまくクリアできずにハマり続け、そのまま大してスコアを伸ばせず終わってしまいました。

よかったこと

  • 事前準備やっとくのはよかった。 事前準備としては、過去のISUCON関連エントリ読んだり、やることリスト作ったりしました。 メンバーで過去問やって当日の流れの感覚を掴んだり使うツールの準備や練習をしといたのはよかったです。 古い過去問は、環境構築に必要なバージョンのパッケージがなくなったりしていてなかなか準備に手間がかかるので、それなりに新しめのを使うべきだと思いました。
  • 理解の浅いところとかわかった。 悪かった点でもありますが、Nginxでのキャッシュするための知識、HTTPの理解不足なところが多々あることろが浮き彫りなったと思います。

悪かったこと

  • ハマった時点で冷静になるべきだった。 画像がキャッシュできない点でハマり、そのまま時間が経ち続けることで、個人的には浮き足立ってしまいました。一度冷静になれればよかったかもしれません。
  • なし崩し的な対応になっていった。 キャッシュ戦略がうまく行かない焦りもあってなし崩し的な対応になってしまっていたので、この辺うまくやれればよかったです。 例えば、同一の役割のサーバが複数台ある構成で、ログやサーバリソースの監視、閲覧、ミドルウェアの再起動を何度も繰り返すのとか以外と手間でしたが、そのまま手作業でやってしまってました。

まとめ

ISUCON7に参加して惨敗したので、振り返りを書きました。 敗退となってしまいましたが、それでもまだまだHTTPやら何やら理解が浅いところが多々あることがわかり勉強になりました。

最後に、運営の皆様、素晴らしい機会をありがとうございました。

参考