予選通過、かなり高い壁だと思っていたので通過出来て大変喜んでおります。
#isucon 提出AMIで提出通りの設定でベンチ動かして当日最高スコア以上の11222.3が出た。どういうことだw
— かるぱねるら (@karupanerura) 2013, 10月 7
ちなみに、当日記録できた最高スコアは10846.599609375でした。workloadは8です。
これ、結果がブレた原因はなんとなくわかってるので後のほうに書きます。
今回気を付けた事
既に2回参加したisucon、これで3回目の参加となりますが、
流石に3連敗とはいかんのでせめて予選通過をというのが今回の個人的な目標でした。*1
なので、ある程度は確実に作業をすすめるために幾つかチームとして動くためのささやかな作戦を用意していました!
作戦と言えば聞こえは良いですが、チームとして動く上である程度当たり前のことだと思います。
ざっくりとしたスケジュールを決めてとりかかる
マイルストーンが無いと十分に調査が終わらないまま、チューニング作業に入ってしまい、無駄な作業をしてしまう為。
業務でチューニング作業などは殆どやる機会が無い為、勘と経験で乗り切るとかスーパーな事は出来ないので、
なんとなくでやらずに時間に区切りを作って調査を行った。
具体的には以下のような感じ。
時間/時刻 | やること |
---|---|
10:00 ~ 12:00 | 初期状態/ボトルネック調査 |
12:00 ~ 13:00 | お昼食べながら作戦会議 |
13:00 ~ | もくもく |
15:00 | おやつ |
17:30 | 再起動テスト |
18:00 | 終了 |
初期調査の役割分担
前回、前々回と同じ作業をみんなでやるなど無駄な事をやりまくっていた為、
ある程度は無駄をなくしたかった為、ある程度決まりきっている作業は事前に役割分担を行い、
調査が終わり、お昼を食べながらチューニング指針を検討し、再度作業分担を行う作戦で行った。
具体的には以下のような感じ。
- 自分
- ssh鍵,git化,deploy,restartツール等足回り系を整える
- ログ調査
- 各人の突発の役割分担の指示
- id:masasuz
- ログ調査(主にMySQLまわり)
- id:kfly8
- アプリ仕様調査
- ログ調査(主にアクセスログまわり)
ぼくがやったこと
本格的なチューニングはアプリ側は id:kfly8 に、DB側は id:masasuzu におまかせしつつ、
サーバーと足回りの。
- ツール等足回り系を整える
- 定期的に「落ち着け」言う
- nginx入れる
- ログ整える
- 静的ファイル配信
- & static_gzip (実際は裏目)
- upstream keep-aliveする
- 速くなりそうなオプションいろいろつけてみる (https://github.com/karupanerura/isucon2013-yosen/blob/master/nginx/nginx.conf) *2
- bin/makrdownをsystemで呼び出してたのをText::Markdown::Hoedwonに置き換える
- これと id:kfly8 によるtotal_memosをキャッシュ/incrする変更で2000くらいから5000くらいまで一気にスコアが上がった
- 提出AMIから起動してrevertしてみたらスコア半分になった
- StarmanからStarletに変更しkeep-aliveを活用出来るように設定をチューニング
- max_workersもいくつか試した末、最終的には80にした
- 冷静に見ると誤差に踊らされた感が否めない
- deployツールやrestartツールが動かなくなるバグを調査しつつ修正していく
- やっとこさtoolchain系が安定したと思ったら、時間がなくなってきたのでCache::Memcached::Fastなどのインスタンスをstateに入れるようにするコソドロチューニングを行う
- ついでにCache::Memcached::Fastのserialize_methods/compress_methodsなどをData::MessagePack/Compress::LZ4に差し替える
- recent_memosをキャッシュする作戦
- アプローチがあまりにもあほで失敗に終わる
- 再起動をかけるも急にスコアが落ちて混乱する
- supervisordを見落としてデフォルトのStarmanが立ち上がってました!!!111
- すみませんでした!!!!!!!!!!!!1111
- 再起動できてボーナスポイント入ってたら最高スコア更新してたはず!!11
- 設定は直したけど再起動してる時間が無かった為これが最終スコアに
- 時間切れ間際にボーナスポイントを見付けて対応する
- 時間切れ
はい!ぼくほとんどなんもできてないですね!!!
今回の反省点
推測するな計測せよ
焦るなつってんだろ!!!!!!!!!111 > 俺
tool chain系は事前に整えておく
すみませんでした!!!!!!!!!!!!1111
リーダーシップを発揮する役目を誰かに
すみませんでした!!!!!!!!!!!!1111
感想
workloadオプションの調整やってなかったチームの事考えると、
ふつーに予選落ちだったんじゃないかとガクブルしています。
準備すごい大変だと思いますし、全員ぶん見るのもっと大変だと思います。
これほど大変なイベントを開催して頂きありがとうございました!!楽しかったです!!
本戦への意気込み
生きて帰れるように頑張ります!!!1111