投稿日: 2021-08-22
チームRakuで参加して、最終スコアは947でした(惨敗)。当日はチームメイトで会社の先輩の@kami_tsukaiさんが体調不良だったので、Slackで応援をもらいながら1人で参加しました。
時間 | やること |
---|---|
10:00-11:00 | 環境構築をする リポジトリをGitで管理する 最初のベンチマークを回す 言語をPHPに切り替える |
11:00-12:00 | ツールのインストール(netdata/alp) alpで計測できるようにする |
12:00-13:00 | 昼食 |
13:00-14:00 | ボトルネック改善1 |
14:00-15:00 | ボトルネック改善1 |
15:00-16:00 | ボトルネック改善2 |
16:00-17:00 | ボトルネック改善2 |
17:00-18:00 | 再起動試験 |
tee
を使えばよいことが判明して解決GET /api/isu
が重そうだなぁというのと、GET /api/condition/:jia_isu_uuid
で400番のエラーが出ていることが分かったGET /api/condition/:jia_isu_uuid
のエラーを解消すれば伸びそうだなと思ったGET /api/condition/:jia_isu_uuid
で499が返っていることが分かったGET /api/isu
のN+1を改善することにした(14:00~)
GET /api/condition/:jia_isu_uuid
が間に合わなくなっているのかなぁと思った一言で言えば練習不足ですが、今回特にマズかったなぁと思う部分を2つ書きます。
JOINしたテーブルを別々のオブジェクトで欲しかったのですが、やり方が分からず苦戦しました。SQLの改善や変更は色々な場所でやると思うので、DBの接続部分のプログラムを書く機会は多いと思います。そのため、PHPの場合はPDOに慣れている必要があると感じました。
1000点で打ち止めになっていたときに、原因に明らかにしなかったことが反省点です。N+1を改善すれば直るかもしれないと、憶測で進めたのが完全に悪手でした。まだ原因は分かっていませんが、マニュアルや、ベンチマークのログをもっと見ていれば、もう少し良い手を打てていたかなと思います。
あまりにも何も出来なさすぎて、プログラミングを始めた頃に感じた気持ちを思い出しました。とてもくやしい。来年もリベンジしたいので、今から毎日少しずつ(2分でもいいので)ISUCONに関わる何かをやろうと思います。
アルゴリズムやセキュリティ、機械学習のコンテストと比べると、まだ入門書の決定版と言われるような書籍が出ていなかったり、全く分からない人がなんとなく出来るようになるためのレールが敷かれていないのかなと思いました。自分はまだ分からない側にいるので、こちら側からレールの作成の手伝いが出来たらいいなと思います。