ISUCON 12 参加してきました
こんにちは、 @kz_morita です。
今回は 7/23 土曜に行われた isucon12 に参加してきたので振り返りを書いていきます。
今回の ISUCON の問題 テーマは、社内 ISUCON 用 のマルチテナント SaaS と言うテーマでした。 今回も問題動画のクオリティがむっちゃ高かったので、詳しくは以下を見てください。
技術的にちょっと特殊だったのが、SQLite3 が DB として使われていたことでした。
マルチテナントで、テナント毎に SQLite の db ファイルが別れていたのが特徴的でした。
終わった後の感想戦や公式の総評でも語れれてましたが、SQLite だと サーバーにファイルが置かれているため、サーバーの分散などが難しくどうするか悩みどころでした。
対応内容の振り返り 初動 チームメンバーと zoom で集合して初動の確認をしました。
いつも通り、環境を整えたりしてました。やったことは以下のような内容です。
レギュレーションを読む サーバーのセットアップ ソースコードや設定ファイル系を github にあげる 初手ベンチマーク kataribe, pt-query-digest などの profiling の準備 index が明らかに足りてないテーブルに追加 SQLite を剥がしたかった 今回一番特徴的だったのは、テナントごとのデータが SQLite でファイルに書かれていることでした。 SQLite でファイルにある以上サーバーも分けられないし、他の MySQL にあるテーブルとの Join などもできないのでこれを MySQL にしようとチームできめて、メンバーの方を中心に取り組み初めました。
結果的にはここにどハマりしてしまいました。
SQLite のデータを /initialize の Endpoint で移行し切らなければならなかったのですが 30 秒という制約がありました。データ量が多く純粋に INSERT するだけでは全然 30 秒以内にはおさまらず、goroutine で並列 INSERT したりそもそも INSERT せずに初期化できないかなど色々試したりしていました。 それでもなかなか問題は解決せず気づけば残り時間がかなり少なくなってしまうという感じでした。