kavo’s diary

備忘録

ISUCON11予選記録 Fratty 164位

チームFratty、ISUCON11予選は参考スコア27426 164位でした。悔しい・・・。

振り返りのためのメモ。

時系列

大きくスコアが伸びたポイント

時刻 スコア メモ
10:06 1631 初回
11:38 16614 インデックス追加1回目
15:55 31803 N+1 trend, getIsuList / DB分散

スコアグラフ f:id:kavohtn:20210822154534p:plain

スコア表 f:id:kavohtn:20210822154611p:plain 後半は点数記入する余裕がなかったが、結局31803が最高点だった。

やったこと

  • mockの停止:効果不明瞭
  • インデックス追加(1):明らかに向上
  • インデックス追加(2):効果不明瞭
  • N+1解消 /api/trend:効果不明瞭(スコアがさがったが対象APIは高速化していた)
  • N+1 getIsuList / DBを別サーバに分散:明らかに向上(一緒にやってしまったので混在)
  • nginx処理の別サーバへの分散:効果不明瞭、ただしサーバ1号機のサチりは解消できていた
  • drop値チューニング:結局、タイムアウトを減らせなかったので初期の0.9が一番スコアが出てそうだった

良かったこと

  • ダッシュボードの導入で、修正前後の結果をSQLAPI1本の単位での比較が高速にでき、修正影響の評価精度があがった
  • N+1解消が例年より早くできた

できなかったこと

  • タイムアウトがなぜ起きるのかを突き止める必要があると思っていたが、それを調べる方法がわからなかった
    • nginxの499ログのidからなにかできたかも

トラブル

  • Goのパス周りが壊れる(解決)

    • ビルドが一時できなくなる。.bashrcの読み直しにより解消。
  • VSCodeでGo拡張機能が動かない(未解決)

    • これの影響でIDE機能が使えず、Goの記述速度がかなり低下した
    • ローカルや別サーバでやろうとしたが、could not import...のエラーで動かせず断念。
  • モニタ枚数が足りなくて写したい情報が写せず、操作にスイッチングコストがかかっていた(長時間なので、馬鹿にならない疲労になる)

  • CloudFormationで別スタックを立てて並列開発できると思っていたが、IP数制限に引っかかった

  • CloudFormationでAMIを差し替えて切り戻しや複製ができると思っていたが、内部IPのような固定パラメータがupdateを阻害してできなかった

  • ダッシュボードでパーセンタイルデータを出してなかったので解析精度が落ちた

今後やりたいこと

  • タイムアウトの原因を特定できるようにする
  • スコアの上下に頼りすぎず、自分たちで出したメトリクスで修正結果の良し悪しを判断できるようにする
  • GoのIDE機能をいつでも使えるように準備する
  • モニタ枚数を十分に用意する