🏇

ISUCON14にチーム「なんかいい感じではやいやつ」で参加しました → スコア19,286点で入賞圏外

2024/12/24に公開

概要

2024年11月25日に開催されたISUCON14にチーム「なんかいい感じではやいやつ」として出場しました。昨年に続き上位入賞を狙いましたが、最終スコア19,286点と入賞ラインには届きませんでした。

チーム「なんかいい感じではやいやつ」

ISUCON14には昨年開催されたISUCON13と同じ3人チームで参加しました。3人ともGo言語の書けるメンバーです。私は主に環境構築やインフラを担当し、アプリも余裕があれば診ていきます。

アバター 名前 役割
hirosuzuki
インフラ担当兼アプリ担当
ISUCON7から毎年参加しているチーム最古参
ekusiadadus アプリ担当
前回(ISUCON12)からのチームメイト
myuon アプリ担当
ISUCON出場は2回目

事前準備

本選は前回同様、3人で集まってオフラインで参加することに決めました。オフラインの方がコミュニケーションが取りやすいですし、何より楽しいからです。

事前練習はオンラインとオフラインで2回行っています。

  • 11.09(土) isucon11予選 オンライン
  • 11.24(日) isucon13本選 オフライン

前回のISUCON13でチーム内の動きはほぼ固まっており、過去問と解くことでそれを再確認できました。

方針

戦略方針は昨年ISUCON13とほとんど同じです。

  • 開始直後は私がプロファイルリングできる開発環境をなるはやで整える
  • ドキュメントを読み、アプリやサービスの理解を深める
  • 15時くらいまで、各自でアプリ改善
  • 16時くらいから複数台構成化

ISUCON13からのアップデートは以下のとおりです

  • ログを追いやすくするため、Datadogでログを集約
  • ChatGPTやGitHub Copilotなど生成AIを活用する

当日

当日は myuonの会社の会議室をお借りして、オフラインで3人集まり競技に参加しました。

私自身が行った作業/改修は以下のとおりです。

  • 各種プロファイリング設定
    • Nginxログ、kataribe設定
    • netdata設定
    • Datadog, fluent-bit 設定
    • SQLログ出力設定
  • インフラチューニング
    • Nginx
    • MySQL
    • Kernelパラメータ
  • アプリ改修
    • /api/owner/chair のSQL軽量化と遅延評価
    • Idempotency-Keyヘッダ対応
    • matcherの内部処理化
  • 複数台構成化
    • 1号機 → Nginx, アプリ
    • 2号機 → MySQL

16時台に入ってサーバー複数台化に着手しましたが、致命的エラーが頻発するようになりました。
原因は複数のサーバーが1つのDBを参照することで、バックグラウンドで動いているmatcherが同時に動いていたことに起因します。原因をわかったのが終了30分前でしたので、大分時間をロスしてしまいました。

最終スコアは 19,286点 です。上位入賞を狙っていたので、悔しい結果となります。

まとめ

「ISUCONは楽しい」ことを再度実感する大会でした。成績は今一つでしたが、親しみなじんだチームメイトと参加するハッキングコンテストはやはり楽しいです。

今回の問題は、マッチングなどヒューリスティックアルゴリズムコンテスト的な課題もあり、挑戦しがいのあるものでした。ベンチサーバーが稼働する感想戦モードが1月17日まで延長されることが決まりました。年末に一人で再度チューニングを楽しんでみたいとも思っています。

最後に、毎年このような大会を企画・開催していただいて、運営の皆様本当にありがとうございました。

Discussion