ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

はじめてのISUCON

2015-09-28に「お前それ糖質警察の前でも同じこと言えんの?」チームの一員としてISUCON5に出場してきました。

経緯

去年くらいからISUCONに興味はありましたが、

  • ISUCON出場者怖い
  • ぼっちなので一緒に出る人がいない

という問題により出場していませんでした。

ところが、今回知り合いのチームに欠員が出たということで声がかかり、軽い気持ちで「出て良いなら出ます!」的な返事をしたら出ることになりました。流れとはいえ、一歩踏み出すの大事。

やったこと・結果

さらっと思い出せるあたりだと、以下の様なことをしました。

  • Nginx -> UnicornUnix Domain Socketに
  • SQLのチューニング
    • インデックス貼ったりOR削ったり
  • get_userのクエリ削減
    • 横着してmemcached使ったけどダメだった。
  • my.conf
    • バッファ量変えたり
  • commentsにカラム追加
  • NginxとUnicornのworker数変更したり
  • メンバーが持ってきてくれたカルパスを貪り食った。

スコア

最終的なスコアは2896でした。

正直、「もっと頑張れただろ!」という悔しさが残る点数です。本当に悔しい。

反省点

  • 過去問やるとか言っておきながらやってなかった。
  • プロファイリングが甘かった。
    • 優先順位がいろいろ間違ってた気がする。
  • 横着せずちゃんとN+1を消すべきだった。
  • initialize時にもっといろいろできた。
  • メモリを1.7GBくらい遊ばせていてもったいなかった。
  • 会場のwifiパスワードとかは事前に調べておいてもらうべきだった。
    • テザリングで戦ったが、精神衛生上よろしくなかった。

所感

全然スコア取れてないのにこんなこと言うのもアレですが、非常に良い問題だったと思います。奇をてらわずに真面目にチューニングしたら、それだけで10000くらいは出そう。ベンチマークツールも公開されたようなので、もう一度挑戦したい。

事前のチーム内での予想だと「HTTP2とか来るのかなー」「Elasticsearchかなー」みたいな話をしてたけど、終わってから思うと@tagomorisさんの「もはやISUCONは予選で落ちる人の方が多くなった。その人達にとっては予選こそがISUCONなのだ」*1という発言がそのまま問題になっていた気がする。

500系を大量に返すと確実にスコアが伸びないというレギュレーションも、現実からあまりにも乖離した「ISUCONでしかしないこと」を減らす方向に働いて個人的には好きです。

関係者のみなさま、ありがとうございました。

さいごに

大事なことなのでもう一度書いておきます。

めっちゃ悔しい