Skip to content

Latest commit

 

History

History
65 lines (41 loc) · 4.57 KB

isucon12-quarify.md

File metadata and controls

65 lines (41 loc) · 4.57 KB
title date draft tags
ISUCON 12 に出場した #ISUCON
2022-07-24 23:39:36 +0900
false
ISUCON
PHP

ISUCON12 の予選に出場しました。

参加メンバー

@mettoboshi, @hanhan1978 と一緒に出場しました。

ISUCON出場まで

そういえば ISUCON 出たことないなと思い申込できたら出場してみようと思っていた。申込みの機会が3回あるうち一番激戦区だった2回目の申込みで運良く出場権を獲得できた。1.5分で枠がなくなると思っていなかったのでびっくりした。

本番まで

@mettoboshi と自分は一度も参加したことがないので、出場を決めてから時間を見つけて個人練習をしました。ちょうど『達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践:書籍案内|技術評論社』 が発売した直後だったのでこの本を読みながら private-isu を解く練習をしました。

その後3人集まっての2時間(+α)の練習を3回やりました。本番を想定してマニュアルを読む時間の意識、インストールしたツールの動かし方、変更を入れてから本番への変更の流れなどを試した。8時間通しての練習は流石にできなかったが、練習したおかげで本番ではつつがなく問題に取り組めました。

本番当日

問題は以下の動画を見てもらえればわかるはず

<iframe width="560" height="315" src="https://www.youtube.com/embed/75YnJ_3289g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

やったこと

  • まず最初にアプリケーションがどのようなものかを理解するためにコールドリーディング
  • 同時に N+1 やボトルネックになりそうな箇所をコメントでひたすら残す作業をしていた
  • 見た結果 マルチテナントのデータが SQLite に入っており、これを倒さないと本戦出場は難しいのではという仮説をたてた。
  • SQLite のデータを MySQL へ移行するスクリプトが用意されていたのでそれを使って MySQL への移行を進めた
    • テナントごとのファイルの中身に tenant_id があることに気づかずテナントごとのデータベースを作ろうとして失敗した
    • 移行準備に時間がかかりそうでこれは途中で諦めた
  • SQLite -> MySQL への移行がうまくいかないのでアプリケーションコードの改修にとりかかる
    • 移行失敗の焦りで普段できていることがちゃんとできずにボトルネックと関係ない箇所を直す
    • SQLite の SQL の調整をしたかったが普段使い慣れていないものをいきなり触ってあたふたしてしまう

Good

  • チーム練習をしてちゃんとボトルネックから目を逸らさずに取り組むことができた
  • お互いを信頼して作業を任せた結果、やるべきことに専念できた
  • fail せずスコアが出て

Bad

  • SQLite -> MySQL は試したことないのに一か八かでやると判断したのがよくなかった。
  • 8時間でやるには自信をもっているPHPのアプリケーションコードを直したほうがよかった
  • わたわたしてしまって狙ったエンドポイントの xhprof の結果が見れなかった

全体を通しての感想

1ヶ月ぐらい準備をして挑んだ初めての ISUCON はチームとしてはとてもよかった。ちゃんとボトルネックと向き合って短い時間でデータを見て意思を持って決断したのはとてもよかった。個人としてはもう少し手が速く動くようにならないと8時間という時間で結果を出すことはとても難しいので日頃から素振りをしておかねば。あとは1回しくじって作業がいつも通りにできなくなったのでそこを直すのと、タイムプレッシャーに弱いのがよくわかったのでそこを直す。

来年はリベンジして予選突破ラインまでいけるようになりたいな(もちろんPHPで)。

チームメイトの記事