$yuzu->log();

技術ネタなど。

ISUCON5予選に参加してきました

ISUCON5の予選に参加してきました。

ISUCONとは?

お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それがISUCONです。過去の実績も所属している会社も全く関係ない、結果が全てのガチンコバトルです。

メンバーは

今回のお題

「ISUxi」という、どこかで聞いたことのあるような名前の「高負荷に耐えられるSNSコミュニティサイト」 機能としては

  • ログイン、ログアウト
  • プロフィール
  • 友達
  • 記事 (友達限定公開あり)
  • コメント
  • 足あと機能 などなど割りと複雑なもの。

実装言語はRubyPerlPythonPHPJava、Go、Nodeなど様々なものがあり、PHP7を使って挑む気マンマンだったのですが、
スタート当初、運営側のPHPの実装ではベンチマークが期待する動作をせず、急遽使用言語をRubyに変更。
Nodeは準備すら出来なかった模様。Noderってチームは何の言語を選んだのだろう。

環境

  • Ubuntu 15.04
  • Nginx
  • MySQL
  • Google Cloud Platformのn1-highcpu-4 (vCPU x 4、メモリ 3.6 GB)

やったこと

  • New Relic導入
  • Nginxで静的ファイル配信
  • Redisでusersやfrient listをキャッシュ
  • MySQLインデックス貼り貼り
  • Unicorn workerチューニング
  • N + 1問題のクエリが沢山あったのでチューニング
  • MySQLのクエリ最適化

もろもろ
6割ぐらいはMySQLクエリ最適化してた気がします。

感想

8時間ぶっ通しで集中してたのでめちゃくちゃ疲れたけど、普段使ってない技術を使うので勉強になるし、すごく楽しかったです。
主催・共催のLINE、Treasure Data、TREASURE、TECHORUS、Googleの皆様、本当にありがとうございました!