タグ別アーカイブ: isucon

isucon6 の予選に出てきた


タイトル通りはじめてisuconに参加しました。チームメイト2人が体調不良ということもあり、体調を整える重要さも気づきました。
結果から言うと、タイトル通り予選に出場して終わったという感じでした。

まず、Azureということで運営の方から用意された、VMを作成するテンプレートをデプロイした所 over limit quata
というエラーが出て何度やってもデプロイできない状態でした。
原因は練習用に立てていたVMをそのままの小押しておいたのですが、そのVMのCPU数と競技用のVMのCPU数の総数が無料枠からオーバーしているようでした。練習用のVMを削除したらその後は難なく立ち上げられました。

初期スコアを図ったら4000超位がスタートでした。
Rubyの実装に変えたり、nginxでの静的配信に変えたりして細いインフラのチューニングをやっていましたが、、そんなに効果はなく。。。

ざっくりプロファイリングの仕方などは事前に確認していたのでalpとかを使ったり pt-query-digest を使ってボトルネックを探すというのを初めた所、遅いのは トップページ(/) や キーワードページ(/keyword) というところは判明しました。

DBにインデックスはるなどの微調整できるかと考えていたりしましたが、特にこれと言って効果が出るのもなく。。。
チームメンバーがキャッシュ機構を入れるということで直接サーバの方でアプリの方を修正してくれました。

その間、、自分のチューニングポイントはある程度やりきった感があって、どうしたもんかと悩んでいる時間で、実装のソースを見て、実際に動かしたいと思ったけど、サーバのアプリはチームメンバーが触っているし、下手に触るとコンフリクト起こしそうだしということで、早くからローカルで開発できる環境を整えるべきだと思いながら、ただただコード見ていました。
(このあたりはだいぶ準備不足でどのようにやっていくかなどは事前に話しておくべきだったと思います。)

キャッシュの機構ができて導入してみるものの、一瞬スコアが出るなどもありましたが、Failが多発するなどなかなかうまくいかないうちにタイムアップとなりました。
今回の問題はミドルウェアレベルのチューニングはあまり効果がなかったので、アプリをきちんと修正できるような環境をさくっと作れるような準備などをもっと考えておけばよかったと思いました。

来年もあったら参加したい!!!ありがとうございました!
そしてチームメンバーありがとうございました!