wtatsuruの技術方面のブログ

はてなスタッフ id:wtatsuru です。日常ブログはこちら https://tatsuru.hatenablog.com/

ISUCON10 本選に出場しました。7位でした。

ISUCON10 決勝にヌルポインターマリアユニバースとして id:polamjag id:Pasta-K と出てきました。スコアは28628の7位。個人としては ISUCON5 以来の本選で、もうちょっと上を目指せたなと悔しさ残るものの、今はこんなもんかなとも思う結果となりました。
isucon.net

当日の様子

リポジトリ公開したので、詳しくはこちらをどうぞ。 https://github.com/tatsuru/isucon10-final

  • 本番までにやることTODO · Issue #1 · tatsuru/isucon10-final · GitHub
    • 事前に予選の振り返り会とアクション出し。わりといいTRY出たものの、やったのはだいたい当日の朝。まあそんなもんだね。
  • 10:50 問題読み会場 · Issue #5 · tatsuru/isucon10-final · GitHub
    • 全員で問題読んで様子を把握。ここまで50分くらい、ほぼ作業せずに様子の把握に集中。
  • 10:55 スプリント会 · Issue #11 · tatsuru/isucon10-final · GitHub
    • 今回のみどころ、15分スプリント開始
  • 12:15 作戦会議 · Issue #10 · tatsuru/isucon10-final
    • コード読み・ログ出しと全貌把握が完了して全体の方向性決めたのがこのあたり。インフラ作業進めつつ dashboard から取り組もう、という動き出し。
    • まだコード全くいじってないしデプロイもしてない。ここまでがもうちょっと早くできたらよかったかな。
  • 14:00頃
    • ペア作業事始めとしてN+1を1つ倒している。効率が悪いので VSCode Live Share やろうぜってのがよかった。
    • インフラ面はデプロイ・ログ分析体制あたりを粛々と入れてる。この辺からスクラムマスター役を全部巻き取る。
  • 15:43頃
    • ペアプロがノッてくる。/api/audience/dashboard の1秒キャッシュ(雑)と50秒フリーズが順調に終わって成果が出始める。
    • インフラ側はベンチ回して負荷や TeamCapacity での変化を見たり、DBチューニングをちょっと入れたり。スコア上げると増える通知周りを次のターゲットにした。
  • 16:55頃
    • 通知周りが一通り完成、サーバー分散準備。
    • 全部入れてTeamCapacity = 20 で2万点くらい。ちょうどいい状態でリーダーボード固定されたので自分たちの位置は認識できた。
    • スプリント会はここで途切れている...
  • 17:30頃
    • 終了30分前、あがくと決めてた最終ライン。
    • サーバー構成の試行錯誤、TeamCapacity 変更あたりを回して調整。スコアの仕組みを見てキャパシティトライしたり、web push 入れたから通知レスポンスは空でいけることに気づけるなど、土壇場でルール把握が効いた。
    • しかし試行錯誤の時間が足りず、最終的には TeamCapacity 65 でやめている。
    • Envoy 突然死を LimitNOFILE=65535 で一発回避したのはナイスだが、焦っててログに残してない。
  • 最後
    • 再起動試験として1台落としたところ、上がってこず焦る。運営チャットで問い合わせたらすぐに再起動してもらえて九死に一生を得る。
    • 最後まで回し続けて微調整。17:58 のベンチで Fail したときは青ざめた...。

振り返り

  • それなりによいスコアで終われた
    • まあ今の実力としてはこんなところじゃないか。トップを狙うにはもうひと押し足りなかった。
  • 15分スプリントがうまくワークした
    • ハマった作業を諦める、適度に休憩する、など人間的な生活を送れている。生活の知恵。
  • インフラ作業と司令塔みたいなのは、それなり。
    • 前半、全体に目がいきすぎてログ分析が疎かになった。全体のボトルネックになっていたと感じる。
    • 後半で粛々と進めつつ、残り2人の進行をサポートするのは悪くなかった。
  • 個人として、テクニカルなスキルは微妙かなぁ...。
    • Commits · tatsuru/isucon10-final · GitHubインフラ作業ログ · Issue #4 · tatsuru/isucon10-final
    • 今回とくにインフラ作業ばかりやってた。Envoy微妙に慣れないけど致命的ではなかったし、作業の精度は及第点、速度もギリギリOKだと思う。
    • デプロイ、サーバー構成なんかは普通にやることやった感じ。3番にDB持っていけば速いだろうというのはわかってたのに、残り時間が少ない+メモリ消費に日和って諦めてしまった、これは猛省。

仕事でエンジニア業から離れて全然手を動かしてないという危機意識から現状の確認をしたいというのが最近ISUCONに出る理由なんですが、今回は手応え半分、危機感半分ってとこです。伝統的なペットの面倒を見る作業は70点、Envoy gRPC あたりで戸惑うというちょっと遅れてる感で -20点。司令塔・マネージャーとしての方が最近の本業で加点してもいいけど、今回コード書いてないので相殺。

サーバ運営や問題はすごくよかったです。サーバートラブルはほとんどなかったし、ベンチマークは快適で競技に集中できる環境でした。問題も、ボリュームと複雑さ、ISUCON運営という意表をついたテーマ、インフラもアプリも工夫の余地が散りばめられていた点、など近年まれに見るよい問題だったと思います。Youtube Live や副賞あたりの盛り上がり施策も楽しかったですね、あとでじっくり録画見ます。運営の皆様、おつかれさまでした。

はてなで一緒に働きませんか?