Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ISUCONに初参加して40位だった話

mo124121
December 18, 2024

 ISUCONに初参加して40位だった話

mo124121

December 18, 2024
Tweet

Other Decks in Programming

Transcript

  1. 事前準備(1)  2か月前から開始  たくさん解いて雰囲気をつかむ  ISUCON 13 https://github.com/mo124121/isucon13-try 

    Go  Private-isu(ISUCON本のやつ) https://github.com/mo124121/private-isu-try  Go  ISUCON 13 https://github.com/mo124121/isucon13-try-rust  Rust  ISUCON 12予選 https://github.com/mo124121/isucon12-qualify-try  Rust  ISUCON 11予選 https://github.com/mo124121/isucon11-qualify-try  Go  記事を眺めてよいやり方を知る (pprotein, トレース, tailscaleあたりはこの辺から)  ISUCON13 1位 https://zenn.dev/tohutohu/articles/923bdf5dcd73af  ISUCON13 4位 https://blog.p1ass.com/posts/isucon13/  pprotein 解説 https://zenn.dev/team_soda/articles/20231206000000 5
  2. 事前準備(2)  デプロイの方法を固める  8時間、一瞬 → どれだけ効率よく開発して、改善を仕込めるかが勝負 → デプロイを確実にやる方法を準備 

    Ansibleを基本に構成  上位勢はgit+シェルスクリプトっぽいので、こちらもよかったかも  テレメトリの取得  「推測するな 計測せよ」 → 目隠しで改善はできない → 必要な情報をちゃんと見れるように準備  専用のリポジトリを作成 + 監視用のインスタンスを外部に準備 https://github.com/mo124121/isucon-o11y  各種ツールを仕込む  ログ pprotein  メトリクス Prometheus + node exporter + process exporter  netdataを使っている方も多くてそちらもよさそう  トレース jeager  開発ツールの整備  監視対象のポートをあれこれ開けたい  Cloud formationでデプロイするリソースをいじるのはまずそう(env checkで落ちて失格?)  tailscale(P2P VPN)  DBをGUIで眺めたい  DBeaver (+ DBの設定@本番) (PHPMyAdminも試したが手元だと超遅かったので切り替え) 6
  3. 当日の動き  あんまり覚えてない…改善はコミットログを見てください  https://github.com/Akijin007/isucon14  主な担当  初動のcloud formationデプロイとか

    計装関係の設定とか  Chiを想定してなかったのでトレースができず…  クッソ重いクエリの修正(なおデバッグで沼った)  インメモリキャッシュの実装  DBの分離(なお失敗) 7
  4. 振り返り  初参加で結構いいスコア・順位  ISUCONは準備は大事で、適切な準備ができた感ある  改善も計測してわかった内容を着実にやればOK  何より残りメンバー2名に恵まれた 

    Goの実装力が足りない  静的解析が有効に機能しない場所でバグりまくり、どうしたらいい?(DBまわり、sync.Mapまわり)  このあたりはRustの方がよかった?ただDBは厳しそう  チーム練が足りなかった  諸般の事情によりチームが決まったのが本番1週間ちょっと前  シナリオ分析、わからない  スコアに効く改善は何か?は単なるボトルネック分析では見えてこない  1位になるには(ボトルネックの対処ができたうえで)もう一歩分析のアプローチ(あるいはエスパー力)が必要 8