ISUCON 14 参加記

久方ぶりに一人で参加
言語は Rust

https://isucon.net/archives/58818382.html

最終順位は 65/831

https://isucon.net/archives/58837992.html

やったこと

  • chair テーブルにカラム追加
    • 緯度・経度
    • 速度
    • ライドに使用中かどうか
      • GET /api/chair/notification で COMPLETED を返したときに未使用に戻す
  • GET /api/internal/matching をいい感じに
    • ライドから見て、最も早く到達する椅子をマッチングさせるように
      • 椅子から見てライドもやったけどスコアは伸びず
    • chairs に貼ったカラムを使う
  • GET /api/*/notification 系の retry_after_ms を長くする
    • SSE やりたかったけど、知見が無さすぎて厳しいので割り切って諦め
    • chair を 500ms, app を 2000ms とかにした (適当)
  • GET /api/app/nearby-chairs を高速化
    • chairs に貼ったカラムを使う
  • サーバを以下の構成に
    • 1台目: app・MySQL
    • 2台目: app・nginx・matcher
    • 3台目: app
  • スロークエリを見ながらインデックスを貼る

やり残し

  • たまにベンチの初期化処理で落ちるバグが直せず
    • 追試で落ちそう
      • 通った
  • chairs の移動距離の合計を集計するのをやろうとしたが時間が足りず断念
  • SSE 勉強