初めてのひとり
ISUCON10 に Sun Microsystems としてソロ参戦して、無事に完走できた。
ISUCON7,8 と出場して ISUCON9 は欠場して、なんとなくもう出ないんだろうなと思っていたが、会社の同僚に勧められたのでエントリーだけしていた。
どなたか #isucon 出ませんか〜?
— sun (@asuforce) 2020年7月10日
その時は誰かと出たかったけど、これ以上特に声掛けもしないまま当日を迎えてしまった。
一応、これまでの手順書みたいなのは昨日のうちに用意して寝たけど、寝るのが遅くなり「これは寝坊するな」という気持ちだった。
奇跡的に 9:30 頃目が覚めてスマホ見てみると開始が 12:00 までずれ込んでいたのでガッツリ二度寝をさせていただいた。
これで完全に元気になり、いい感じに PC 周りをセットアップすることができた。
準備できた! #isucon pic.twitter.com/rZzjCqMamA
— sun (@asuforce) 2020年9月12日
朝届いたパソコン音楽クラブの Night Flow LP を聞きながら優雅な開幕となった。
家で仕事しているのも相まって直ぐに集中モードに。(最初の bastion の ip 間違えて焦ったけどね...
最初にやったことは、編集する予定のファイルを一通りローカルに落として git で管理するようにした。
アプリケーションと sql ファイルだけ scp で sync するようにして、後は手作業で調整して git リポにも反映するようにした。
チームだとやばいことなるけど、1人だとこれで十分だった。
コマンドはまとめて Makefile で管理していい感じにログ分析できるようにとかした。
個人用の discord チャンネルにログをバンバン残していったので、過去の自分が何やったか思い出せるのと、都度書き出す事で頭の整理ができた。結果的に下記のチューニングができた
- 3 台の役割分担
- nginx の静的ファイルの cache
- index はりはり
- bulk insert に書き換え
常日頃やらない、index 貼りや bulk insert かませたから結構満足した #isucon
— sun (@asuforce) 2020年9月12日
特に index と bulk insert は今までの自分だとシュッとできない類だったので嬉しくなった。(あんまスコアは伸びなかったけど search のあたりに N+1 がいた気がするけど倒し方が結局わからなくて撃沈した。
alp, percona-tools もフル活用してログを解析したり、 explain できっちり query を理解していったの初めてだったかも。
終了後に discord に「テーブル2つしかないから、 db 2つ使った」的な発言がけっこう流れて、確かにぃいいいってなった。
絶対来年同じ構成は出ないだろうけど、そういう ISUCON らしい逆転の発想磨いていきたいなと強く思った。
あと今までよりトライアンドエラーのスピードが圧倒的に早くなったし、詰んだ時にとりあえずこっち先やろうみたいなのが結果的に詰んでいた問題を解決する場面が何度もあった。そういう成長が実感できたのもよかった。
自分で測ったスコアは 647 位が限界だった。
1000 点台をだすためにもう1, 2つ越える壁があるなと認識できた。
設定類はこんな感じ。
ほかの人のも見て勉強しようっと。
最初は緩い感じで参加したけど、今まで以上に集中できたし、何より小さい成長を実感できたのが良かった。
運営の皆さんには大変感謝している。
また来年も出たい!
ご飯
- 朝:
- 昼:和風だしうどん(カップ麺)
- 夜:月見うどん