ISUCON11予選に「Railsへの執着はもはや煩悩(ry」で参加したけどダメでした
今年も@cnosukeさんと@aibouさんと「Railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。」というチームでISUCONの予選に出ました。
3人とも別の会社にいるので、去年同様に前の週にリハーサルを行ってイメージを掴みました。
去年と同じようになんとなくの役割分担として、cnosukeさんがAPIのコード変更を行い、aibouさんがDB・nginx周りのチューニングを行い、自分はデプロイとか設定のgit管理したりと雑多な対応をしていました。
なんとなくのスケジュール
昼食を食べずにぶっ続けでやっていたのでかなり疲れてしまって、あんまり当日の記憶も残っていないのですごく雑です。
時刻 | やったこと | メモ |
---|---|---|
09:40 | 集合 | |
10:00 | 競技開始 | |
10:11 | webapp以下をgitに突っ込む | |
10:29 | 1号機をnginx, アプリ、3号機をmariadbにする | これだけでちょっとスコアがった |
10:49 | いくつかmariadbにインデックスを貼った | 24,648点出て暫定2位になったのでテンションが上がった |
11:52 | /assets 以下はnginxが直接返すようにした |
|
11:59 | 秘蔵のmy.cnfを投入した | 実際は 設定ファイルのパーミッションがおかしかった せいで投入できていなかった… |
12:39 | /api と /initialize 以外は全部nginxが直接返すようにした |
|
13:05 | アプリのリファクタリングが終わった | |
13:23 | 1号機のCPUが辛いので /api/trend だけ2号機に流してみた |
|
16:02 | バルクインサートするようにアプリを書き換えた | 38,324点まで上がった |
16:24 | アプリを書き換えたり、更にmariadbにインデックスを張ったりした | この頃に最高得点の54,690点が出た |
17:13 | アプリを直したりmariadbにインデックスを貼ったりトラフィックを1号機と2号機で混ぜるようにしたりした | 36,926点までしか出なくて伸び悩む |
17:30 | ポータルがメンテに入ったので マシンを再起動 してみたり、細かなアプリケーションの改善とかをしてた | |
18:10 | ポータルがメンテ明けになったのでベンチを回してみたところ、なんと1,000点しか出なくなってしまった | とても焦った |
18:44 | nginxの設定がおかしいことに気づいたがもう時間がなくなってしまったので、1号機にnginxとアプリ、3号機にmariadbの構成で出した。 | 13,982点になってしまった |
競技中のトラブル
mariadbの設定が反映されていなかった件
/etc/mysql
以下をすべてgitリポジトリに突っ込んで、 /etc/mysql
自体はそのリポジトリのシンボリックリンクにしていたのですが、どうやらパーミッションがおかしい(本来はroot:rootが所有しているのが、isucon:isuconになっちゃった)のが原因で、実は設定が反映されていなかったことに途中で気づいて、気づいたものの対応するのにとても時間がかかってしまいました。
結局、AMIがあったので別のインスタンスを立てて、それの /etc/mysql
の構成を真似て構築し直して、gitリポジトリに追加しないようにしたところ使えるように戻りました。
nginxの設定がおかしかった件
ポータルのメンテ後くらいからスコアが1,000点しか出なくなって、なんでだろう…とずっと考えていたのですが気づけず、ISUの「状態」が1行も出ず空っぽになっているのがおかしい?と気づいて、
見てみたところ、自分が入れてしまったnginxの設定でIPアドレスを間違っていたのが原因でした。。。
リクエストを飛ばす先がないのでエラーになるかなと思ったのですが、今回のルールでは減点にならなかったので、加点もされず減点もされず、どこがおかしいのか気づくのに時間がかかってしまったのがもったいなかったです。。。
予選突破には11万点くらい必要だったので届かなかったかもしれませんが、途中でトラブってしまったのがもったいなかったです(´;ω;`)
問題はとても面白かったし、ポータルも途中不具合があったもののそれ以外は快適に使えましたし、すごく楽しかったです。
来年こそ予選突破したい…!