odan blog

ISUCON10 予選 参加記

結果

WIP

個人でやったこと

New Relic の導入

入れて config 書くだけで各リクエストのメトリクスがわかるのは便利でした。各リクエストに紐づく MySQL のクエリが見えると思っていたんですが、結局当日までやり方がわかりませんでした…。

最後 New Relic を無効化してベンチ回したら 500 ぐらいスコアが伸びました。

nginx で bot 対策

レギュレーションに書いていて、手が空いていたのでやりました。nginx.conf の書き方全然知らなかったので結構手間取りました。

nginx で 静的ファイルを cache

いつものやつ。けどベンチは API しか叩いてないし、さばけた GET リクエストの数でスコアが変化するわけでもないので、意味があったのかわかりません。

insert を bulk insert に変更

自明な改善点だったのでやりました。nodejs の mysql の nested array をいい感じに bind してくれる機能の挙動がわからずかなりハマりました。

これはその時の様子です。

nginx をロードバランサーにして app を 3 台に増加

夕方ぐらいからそろそろやるかとなって取り掛かりました。やり方は理解していたので楽勝だと思っていましたが、色々ハマって時間を使いました。具体的には次のとおりです。

最初は app/MySQL/nginx を server1 に同居させて、server2/server3 は app だけの構成にしていました。しかし New Relic のコンソールを見ていると、server1 の CPU 使用率が 100%なことに対して server2/server3 の CPU 使用率が 50% 程度なことから、server1 で app を動かすのをやめる構成にしました。

再起動チェック

いつものやつ。systemctl enable を実行するのを忘れていて、再起動したら golang の app が動いていたので危なかったです。

トピックごとにテキストチャンネルを分ける

会話が脱線しないようになるかなと思ってやってみました。8 時間という短い時間なので、あまり意味がなかったかもしません。

チーム的にやらなかったこと

出来なかったこと

思いついたけどやる時間がなかったものを簡単にメモっておきます。

感想戦で知ったこと

Discord の感想戦を眺めてなるほどって思ったものを書いておきます。

感想

去年より問題はかなりシンプルになったにも関わらず、やることがたくさんあって楽しかったです。

改善しそうな何かをする前に、それって本当にやる価値あるの?と考えてしまい、そのための調査にメンバーの時間を使うことが多かったです。8 時間しかない ISUCON だとやる価値がありそうなことを順番にやるよりも、ある程度の効果が期待できそうかつ、手数がそんなに多くないものから取り掛かるのが正解だったかもしれません…。

去年より問題に対する解像度や手札の数が増えてきたのを感じるので、来年も参加したいです。