🎇

ISUCON10 本選振り返り ~ チームMN

2020/12/02に公開

この記事は マイナビ Advent Calendar 2020 12月2日の記事です。

概要

2020年10月3日(土)に行われたISUCON10本選にチーム名MNとして参加しました。このチームは株式会社マイナビの有志で結成したチームです。結果はスコア23,438点で33チーム中12番目でした。

予選突破まで

ISUCON10予選については、別エントリーでまとめています。
https://zenn.dev/hirosuzuki/articles/8a4f91d5dc384cba534d

準備

本選1週間前の9月26日に最終リハーサルを実施しました。本番を想定し、10時~18時までの時間帯で、ISUCON8本選の過去問題に挑戦しました。結果としては惨敗、思ったようなスコアが出せず本番に不安を残すことになりました。本選問題は予選と比べてコードボリュームが大きく、全体把握ができないまま個々のボトルネックの解消に注力してしまったことがスコアを大きく向上できなかった原因でした。これをふまえ本番では開始からマニュアルの読み合わせるなど、全体把握に務めることをチーム内で共有しました。

本番

リハーサル練習の教訓を生かして、開始から1時間はシステム全体把握に当てました。
その後施策として以下を実施していきました。

  • 仮想ポータルサーバー、仮想ベンチマーカー、DBサーバーに役割を分割
  • ダッシュボードの1秒キャッシュ
  • N+1クエリー除去
  • データベースにインデックス追加
  • チームキャパシティ数のチューニング

開始から6時間後の16:00くらいでスコアが23000点くらいで頭打ちになりました。
その後、微調整やベンチマーク安定化をして競技を終えました。

本番当日の詳しい作業内容はチームメイトのブログエントリーのほうが詳しいかもしれません。

敗因

本選ではアプリケーションコードの改善がほどんど行えていません。有効だったのはN+1クエリーを除去したくらいです。力を発揮できなかった主な原因は2つです。

  • コード量が大きくアプリケーションコード全体が把握できなかった
  • 仮想ポータルサーバーと仮想ベンチマーカーの2つのアプリケーション構成だったため、事前に用意した自家製パフォーマンス測定ツールが有効に機能しなかった。(パフォーマンス測定ツールは1つのアプリケーション構成を想定していた)

次回はコードの静的解析ツールの準備やパフォーマンス測定ツールの改善を行って臨む予定です。

まとめ

去年参加したISUCON9大反省会でISUCONはこの10回大会をもって終了と聞いていました。有終の美を飾るべく優勝を目標に、社内勉強会や本番相当のリハーサル会の実施、ツールやチートシートの準備をしてきました。予選は比較余裕を持って突破できましたが、本選ではトップ争いに参加することもできませんでした。まだまだチームとして実力が足りなかったといえます。

その後の941さんのtweetによればも来年もISUCONは開催されるようです。次回はより上位に食い込めるよう頑張りたいと思います。

Discussion