ISUCON6本戦で昨年来の夢を叶えた #isucon

ISUCON6本戦で昨年来の夢が叶いました。
これです。

かっこいいですからね。

ISUCONとは

いい感じスピードアップコンテスト。 webサービスが与えられるので頑張って高速化します。 詳しくは公式サイトを読んでください。

isucon.net

今回のお題は、pixiv Sketch。

チーム

チーム「:innocent:」として参加しました。
順位表での表示は😇になっていました。まさか本当に置換されるとは思っていませんでした。
運営の方がわざわざ対応してくださいました。ありがとうございました。
画像は1位を獲得した瞬間です。

f:id:yu3mars:20161027131152p:plain

私を本選に連れて行ってくれた素敵なチームメイトの記事はこちら。

utgwkk.hateblo.jp

www.wass80.xyz

やったこと

  • rack-lineprofileを使うもログが残らず失敗
  • Azureでポートを開く
  • nginxでHTTP2対応
  • nginxで静的ファイル配信を試みるも失敗
  • Redisでキャッシュを試みるも型エラーを起こし失敗
  • DBの構成をSlackに張り付けて眺める
  • N+1問題を解消するためクエリを改造する

結果

23位 3177点
当初の目標である正の点数を取ることに成功しました。
初期点数 3907点 を一度も超えることができなくて残念……

前日の様子

  • nginx実践入門を購入
  • ヒカリエ侵入訓練
  • 当日集合時間決定ミーティング
  • 例によってruby実装をベースに頑張ることを確認

当日の様子

  • 8:50に到着。名札を獲得。会場は半分くらい席が埋まっていた。
  • 会場のレゴを撮影する。
  • 持参したルービックキューブで遊ぶ。
  • 競技開始。PVにざわつく。
  • 参加チームがことごとくデプロイに失敗する。4コア*5台でAzureの制限に引っかかった?
  • 2コア*5台に構成が変更される。
  • 高速にデプロイ。ベンチを回し暫定1位を獲得(最初にベンチを回したので自明)。
  • nginxの設定をする。
  • アプリをDockerから出すことを検討するも、Docker爆破コストを考え、そのままにする判断をする(結果的には引き摺り下ろしたほうが良かった)。
  • rack-lineprofileを使うもログが残らず、眼力でボトルネックを調査し始める。
  • 方針が立たなさ過ぎてDBの構成をSlackに張り付けて眺める。
  • get_ほげほげ がN+1問題を引き起こしていることが分かっていたので、改善に取り組む。点数が初期実装を超えられなくて謎。
  • nginxで静的ファイル配信を試みるもfail。原因究明に失敗したため、切り戻し。
  • Redisでキャッシュを試みるも、キャッシュが返す型がキャッシュでないものと変わっており、型エラーを起こしfail。終了直前まで粘るも解決できず。
  • 絶対に正の点数を取りたかったので終了10分前に切り戻し。再起動実験は時間がないのでしなかった。
  • 😇 ←この顔になった。
  • 懇親会で他チームの方針を聞いて知見を深め、交流した。

感想

自分の実力不足を改めて痛感しました。
次回があれば、本選で名札を獲得して、有意な貢献ができるようになりたい。
Webサービスに関して、ある程度全体の雰囲気が分かるようになった(気がする)のは収穫。
運営の皆様、参加者の皆様、そしてチームメイトの2人に感謝です。

おまけ

Iikanji Syokuba-sagasU CONtest 個人的に開催中です。 いい感じの職場情報があればお知らせください。