Share
Embed
Transcript
8 slides
-
事前準備(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) デプロイの方法を固める 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 -
当日の動き あんまり覚えてない…改善はコミットログを見てください https://github.com/Akijin007/isucon14 主な担当 初動のcloud formationデプロイとか
計装関係の設定とか Chiを想定してなかったのでトレースができず… クッソ重いクエリの修正(なおデバッグで沼った) インメモリキャッシュの実装 DBの分離(なお失敗) 7 -
振り返り 初参加で結構いいスコア・順位 ISUCONは準備は大事で、適切な準備ができた感ある 改善も計測してわかった内容を着実にやればOK 何より残りメンバー2名に恵まれた
Goの実装力が足りない 静的解析が有効に機能しない場所でバグりまくり、どうしたらいい?(DBまわり、sync.Mapまわり) このあたりはRustの方がよかった?ただDBは厳しそう チーム練が足りなかった 諸般の事情によりチームが決まったのが本番1週間ちょっと前 シナリオ分析、わからない スコアに効く改善は何か?は単なるボトルネック分析では見えてこない 1位になるには(ボトルネックの対処ができたうえで)もう一歩分析のアプローチ(あるいはエスパー力)が必要 8