ISUCON13参加記
ISUCON13に参加しました。チームは去年と同じで、blue最高!でした。目標は初期状態からスコアを有為に改善するでした。(去年は改善できなかった挙げ句、環境を壊して初期状態出だしたため
メンバーと役割
saikou9901
主にアプリケーションコードを修正する
blue
データベース係
blue_jam
(ICPCのスタッフをやるため、14時すぎに行動開始) ベンチの結果を解析して、改善する場所を提案する
言語と使ったツール
- Go
- VSCode +Liveshare(サーバー上で動かす
- pt-query-digest
練習と作戦会議
ISUCON本に目を通した。(完全に理解をしたわけではない
さくらのクーポンへの案内がなかなかなかったので、デスクトップに環境を立てて、ラップトップから操作をする練習を一人でした。
練習したのは、
- private-isu
- ISUCON11予選
- ISUCON12予選
で、1台構成で行けるところまでやった。
作戦会議では、去年の上位陣の参加記を参照して、どうするか決めた。去年との主な変更点は、
あと、一番大事なこととして、ICPCと被っている都合上、半分ぐらい参加できないことを話した。
ISUCON開催日の件、チームに話しました。
— blue_jam (@blue_jam) November 5, 2023
途端に呆れるチームメイト。
すまんな、もうサーバー設定はできない。
今から競技時間の半分しか参加できない事、伝えます。
ICPCでボランティアしている人もいるんです。俺は両コンテストの開催日を被らせた神を絶対に許さない。
さくらのクーポンが手に入ってからは、一回みんなでサーバーのセットアップを試したり、共同編集の練習をした。
当日
9:30
みんなでDiscordにつなぐ。自分はすでにICPCの会場準備をしていたので、イヤホンを片耳に指して他のメンバーが話しているのを聞いていた
10:00
ISUCONは始まったが、自分は続けてICPCの準備をする。チームメイトがサーバーにちょっとした変更を追加してベンチを走らせた結果、ベンチが失敗しているっぽくて大変そうだった。
12:30
ICPCの受付業務に専念するため、Discordから完全に撤退する。
ICPC参加者のメンバーが全員揃っているか、必要なものをちゃんと持っているか確認をしていた。
14:00
受付業務が終わったので、宿泊しているホテルに移動し、作業に参加する。
まず、スロークエリログの設定が1秒になっていたので、それを0にしてベンチを走らせてもらう。
saikou先輩がgetUserStaticsHandler
のN+1を解決しようとしていて、エラーで悩んでいたので、手伝って直す。3981点
スロークエリログを解析したらADMIN PREPAREが一位になっていたので、interporateをONにしてもらう。
スロークエリログを解析して、livestream_tags
のlivestream_id
にインデックスを張ってもらう。5674点
スロークエリログを見て、icons
のuser_id
にインデックスを張ってもらう。8191点
saikou先輩がmoderateHandler
をいじる(内容はよく把握していない)。9901点
ここまでをやって大体17時ぐらいだった。blue先輩がランキングの計算をSQLを使って頑張ろうとしていたがうまく動かずに断念した。
スロークエリログを止めて最後に再計測して10414点。
感想
目標のスコアを改善するは達成できたので良かった。次はnginxのアクセスログをちゃんと解析したり、データベースにインデックスを張る以上の改善をしたい。
次回はちゃんとスケジュールを確認して、多方向に迷惑をかけないようにしたい。(といいつつ、打ち上げのスケジュール調整で、ダブルブッキングをしてしまったが)