社内ISUCONに参加して優勝した
社内ISUCONが開催されたので参加してみた。
参加チームは全10チーム。
ISUCONは今回初めての参加だったが、思っていた以上に楽しかった。
参加するまではそんなに楽しいものなのかと懐疑的だったのだが、ほかのチームとスコアを競い一喜一憂するのは楽しいものだった。
社内のプライベートクラウド上で行い、PHPとRubyのアプリケーションを選択することができた。
最初はRubyでやったが、スコアがあがらなかったのでPHPのアプリケーションに変更した。
効果があったのが、クエリのチューニング。
select句でアプリケーションに使うカラムに絞ることでIOを減らしたり、結果をセッションにキャッシュすることでクエリの実行回数を減らした。
また、テーブルのカラムにインデックスを作成してチューニングした。
そのほか、php-fpmの子プロセスの数を増やしたり、mysqlのパラメーターをチューニングするのも効果があった(具体的にはinnodb_buffer_pool_size,read_rnd_buffer_size,sort_buffer_size,query_cache_sizeあたり)。
サーバ側はほかのメンバーに任せきりといった感じだったので、どこがボトルネックになっているかを素早く探すスキルやミドルウェアをパパッと導入できるスキルを身につけたいと思った。
優勝できたのは他のメンバーが頑張ってくれたのと運がよかったのだと思う。
個人的には反省の多いISUCONだった。
課題が見つかったのとISUCONを楽しめたのが収穫だ。