@ijin

[Michael H. Oshita]

ISUCON5の予選に記念参加してきた

とあるエンジニアが言い放ちました。

上位に届かないチームはただの記念参加だよねー。

というわけで、今年のISUCONは見事に予選落ちしました。

お題

ISUxi」というどこか懐かしい響きの「高負荷に耐えられるSNSコミュニティサイト」

友達、記事、コメント、足あと機能が揃っており、以前より複雑度が増したなかなかの凝った作り。

起こったこと

これはESIによるpartial cachingが出来るので、Varnishでやってみよう!

と意気込んだものの、エラーが解決できず結局は間に合わずに終了ーーっ。

やりたかったこと

  • Varnish + ESI + Redis & MySQL

やれたこと

具体的な作業内容は今手元にないので、ぼんやりと。

  • MySQLのクエリー修正、パラメータ、Indexの追加
  • nginxのパラメータ追加
  • kernelのパラメータ追加
  • 一部 redis化
  • rubyプロセスの調整
  • sidekiqのワーカーで遅延書き込み

はまったとこ

今回はいろいろ初めてがあったので無駄に時間を潰した感じ。

  • systemd - 最新のUbuntu 15.04はsystemdなんですね。ずっと14.04 LTSのupstartに慣れていたので、こっちは初めて触わった。
  • apparmor - 設定ファイルをsymlinkでやろうとすると読み込まれず。。こいつのせいだと気づくのにちょっと手間取った。いらない子には怒りのapt-get purgeを。
  • mysql - なんか設定ファイルが/etc/mysql/my.cnf単体じゃなくて、symlinkされたりいろんなディレクトリに散らばってたりで若干戸惑った。後、上記のapparmor関連で設定ファイルがしばらく全然反映されずに。。
  • varnish - こちらもvclやパラメータ指定が本来/etc/default/varnishで出来るはずが、なかなか反映されずに苦労した。Varnish 4.0のパッケージはapt-getですんなり入るんだけど、起動スクリプトが/etc/init.d/varnishに設置されるのに、そちらは無視され、systemdの方が優先される模様。カスタマイズするには/lib/systemd/system/varnish.serviceをコピって編集してdaemon-reloadが必要。詳しくはこちら

終わりに

競技内容が確実に進化していて、非常ーーに楽しめました!その分、出題者の苦労が計り知れず。。こんどビールでも奢ります。今年の本戦は残念ながら行けないけど、外野として楽しくポップコーンでも食べながら観戦したい所ですね。

おまけ

現在はHashiConfに向けての飛行機の中だけど、悔しいので機内で復習しておきます!

Comments