ISUCON13 に参加した。なお、前日は気合を入れるためにラーメンを作った。
今回もうなすけ・やままと「たんぽぽの上の刺身」で 4 回目の ISUCON に参加した。結果は 15,549 点で 160 位 (再起動試験の結果を含めたら 139 位くらい) だった。最後の 1 時間前には 100 位を切ることもあったが、結果的には 100 位以内に入れず残念だった。
素振り
進め方やデプロイ方法、ベンチマークの履歴やスロークエリの共有方法等、どうするか・前回どうしたっけを思い出す会をやろうと思っていたのだけど、以下の理由から通話繋げつつ個々人で振り返ったり、ツール類を直したり、家のインターネット直したりすることになった。
今日は ISUCON の素振りをはじめようとしたら、うなすけが家のインターネットを壊したせいで全然素振りができませんでした。なんでもかんでも壊さないでほしいです。おやすみなさい。
— らいむ (@lime1024) November 18, 2023
全員違うことをやっていたが、各々大きな声で話すのでひとりごとなのか、話かけられているのかがわからず度々「誰に話しかけてる?ひとりごと?どっち??」という会話が発生していた。また、会話をはじめようとすると静かになるので大変だった。ちゃんと会話して。
自分は過去の振り返りをしつつ、チーム紹介のスライドをせっせこと作った。
本戦
今年は予選が無く本戦のみで、全員が今後「ISUCON 本戦に出場経験があります」と名乗れるようになった。なお、開始 20 分後にはうなすけと喧嘩をしていて、やままがずっと「けんかしないで!」と言っていた。すみません。
スロークエリの改善
自分が担当したのはスロークエリの改善周り、と言いつつインデックスを貼るくらいしかできなかった。
pt-query-digest の結果を見る -> explain 叩く -> インデックス貼る -> explain 叩く -> デプロイする -> ベンチ回す -> レビュー依頼を投げる -> main ブランチにマージするを延々とやっていたら気づいたら 8 時間が終わっていた。気持ち的にはインデックスを貼るのは午前中くらいで終わる予定だったし、気になっていたところ全てに貼りきれたとも言えなかった。くやしい。とはいえ、インデックスを貼っていくと点数が上がっていくのが観測できてうれしかった。
インデックス貼るだけに時間が溶けていった原因は色々あるけれど、1 番の要因は 3 人ともデプロイしてベンチを回したくて、待ってないといけないのがつらかった。あと、そもそもベンチマークの動かない時間があったのも結構つらかった。
デプロイとベンチがつまると、手元に仕掛中のものがどんどん積み上がっていって、マージする順番を間違えてリバートして再デプロイして、もっかいリバートして...みたいなミスを繰り返してしまった。
インデックスを貼ったことによる効果を確認したいので、細かくデプロイしてベンチ回して測定して、ということをやりたかったのだけど、デプロイ・ベンチ周りで手間取るのであれば、もう少し大きい単位でやってもよかったなあと結果的には思った。
本当は他にも N+1 で気になるところがあったり、テーブルが複数あったので後からユーザの手によって追加されないようなものはアプリ側で持たせたりしたかった。しかしながら、そもそも調査するところまでいけなかった。まだまだやれることはあったのになあという気持ちだけど、去年とは違って無力感は無かった。
反省会
今までで一番熱く長い反省会になった気がする。なんなら前回は反省会すらしていない。反省しろ。
デプロイとベンチ待ち
これは 3 人とも一致していた。ずっと、デプロイとベンチがつまっていた。ここどうやって改善すると良いのだろう...
一人で集中するのがむずかしい
全員ひとりごとの声がでかくて、マニュアル等を読むときつらかった。一応、読んでる間は静かにしようというコミュニケーションはあったのだけど、途中でうなすけに「まだ読み終わってないんすか?」と言われた。こういうことにムカつかないようにするためにも、次回は味集中カウンター*1を用意しようというところで落ち着いた。
最後の最後にわちゃわちゃしない
これは反省というより良かったことだけど 17:15 くらいにコードフリーズして、余裕をもって再起動試験できたのはよかった。いつだか最後に fail して 0 点で終わったことがあったので、その反省が生かされていると思う。
お酒が入っていないおやつを選ぶ
大好きな Rummy を買ったのだけど、やままにお酒入ってるからだめでしょって言われた。たしかに。
おわりに
反省会中にうなすけが「刺身の上のたんぽぽ」と言い、チーム名を間違えたことを締めの言葉とします。
今年もお疲れ様でした。来年も仲良く頑張りましょう。
*1:どこかのチームで用意していたのを参考