ISUCON8の予選に出てみた

概要

  • CTFつながりでうさぎさんに声をかけていただき、megumishさんと3人で参加した。
  • チーム名は「受験生の仇」
  • 13980点で学生枠8位で通過できた。

とにかくうさぎさんのギャンブル運の賜物である。

isucon.net

なにをしたの

基本的にインフラまわりをしていた。

突然のh2oが登場してびっくりするなどした。h2o速いですね。

nginxに慣れていてログ取りとかもこれで用意していたので、最初はnginxに移行することを試みたが、微妙に遅い上にcsvファイルを上手く転送できずよくわからなくてあきらめた。

代わりにh2oのログフォーマットを書き換えて、alpで使えるようになおした。これでやっと定量的にパフォーマンスをみることができるようになった。

あとpythonのプロファイラも事前の練習で出来上がっていたものを使えるようにセットアップしたりしていた。あまり使わなかったけれど。

最初は一台のサーバでWebサーバもDBサーバも動かしていたけれど、htopとかdstatでみていた感じ、メモリが飽和していて苦しそうだったので分けてあげることにした。

分けたことで、DBサーバにメモリをたくさん食べさせてあげることができてDBもうれしそうな悲鳴をあげていた。

初めてMySQLTunerをつかってみた。だいたいはおすすめ通りでいい感じだったが、一部おすすめ通りだとメモリが少なすぎるのかDBが死んだので適宜調整した。

github.com

あとは、アプリ側の小さな修正をしたり、二人のプルリクをレビュー&マージしたり、ロードバランシングできないかなーと試すなどしていた(firewalldさんの存在を忘れかけていて頭をひねっていた)。

最後はみんながベンチを投げた時のDBサーバの負荷を見て「あ、落ちたね」「終わった」とか呟くボットになっていました。

結果

最後にうさぎさんがスロットを回し続けたおかげでなんとか13980点に到達した。最後の賭けが外れていたら本戦には行けていなかった。

一応再起動のことを考えてsystemctlまわりの設定は見直していたものの、追試で落ちないことを祈り続けていた。祈るだけじゃなくて検証したいものですね。

感想

運良く本戦に行けることになったので、次は実力で勝負したいところ。

バイナリ問が出るといいなー。(これはCTFではない。)

あと、学生チームが強い。(昨年同じチームで出て予選敗退した人が今回別のチームで出ていたのだが、我々よりずっと高得点を叩き出していて、学生なのに普通の枠で通過しており、さすがだと思った。)

みなさまどうかお手柔らかにお願いいたします…。

チームメンバーの参加記

kimiyuki.net