潔く。
思った事
ソースを見て
- DB重そう
- 参照系クエリでJOINしまくってるなー
- recunt_soldとか
- 更新系重そうだなー
- IS NULL
- ORDER BY RAND
- 参照系クエリでJOINしまくってるなー
- appがstatic file返してるの無駄だなー
- front endがapacheなのはやめたほうがよさそう
- 最終的にはmemcachedにレスポンス突っ込んでnginxのmemcachedモジュールで返せればいいなー
- recunt_soldは別パスにしてSSIで分離出来るとキャッシュの寿命分けられていいなー
負荷を見て
- やっぱりDB重いなー
- これいっそRedisとかで書き換える方がいいのでは
- でもRedis普段使ってないし怖いなー
- ベンチ直後のappが重い?
- いろいろ疑ってみたが原因わからず
- DBIをdisconnectしてみたが、遅くなった
- いつの間にか解消されててなぞ
- rev負荷あんま無いなー
- appたててしまうとよさげかなー
どうでもいい系
- ラーメンたべたいなー
- 鯖…
- 鯖……
やった事
- ngrircd/git/NoPasteのhosting
- appの中のあやしいクエリの洗い出し
- 洗い出しただけで終わってしまった事が悔やまれる
- nginxの野良ビルド/supervisord管理化
- nginxから静的ファイルを配信するようにする
- gzip圧縮のせいで重くなる
- うっかり一緒にコピってきたので気付かず
- gzip圧縮のせいで重くなる
- extlibのdeploy整備/ショートカット作成/git管理化
- memcachedをアプリから使えるようにする
- recunt_soldのキャッシュ
- ベンチがコケたのでrevert
- configをfork前にloadするようにする
- 焼け石に水だろうけどとりあえず
- Cache::Memcached::Fastがうっかりlocalhostを見たままだったので戻す
- gzip onでベンチ通ってるのでgzip_staticに変える
- ベンチがコケたのでrevert
- いま思えばベンチがこけたのはたぶん別の原因
- ベンチがコケたのでrevert
- Clutchをアプリから使えるようにする
- recunt_sold用に別テーブルを用意
反省
推測するな計測せよ
負荷を計測する方法は分かっても、そこからの分析が十分に出来ず、
なんだかんだすぐ推測に走ってしまった。
負荷分析は知識が足りないのと、経験が足りないのとがあり難しいのは分かっているが、
せめてもう少し経験があれば「この情報が足りない」「このパスのこのときの実行時間分布が欲しい」とかが判断出来たのかなーと思った。
また、焦ってついつい計測してしまったというのも大きかった。
ついコードをいじりたくなるのを我慢してアプリの挙動と性質を正確に把握する
アプリの性質がわからないと効果的なチューニングが出来ないので、(やっても局所的なチューニングになるので大幅にスコアを上げる事はほぼ出来ない)
ここを正確に把握する事でもっと効果的なチューニングが出来たはずだったが、
ついついコードをいじってはベンチを走らせてを繰り返し、ミニマルなチューニングのみで終わってしまった。
ついコードをいじりたくなるのを我慢して話し合って方針決めと役割分担をする
前回よりは情報共有は比較的出来ていたが、それでもベンチマーク情報、計測情報の簡単な共有、作業しますよ宣言、+αで終わってしまった。
誰かがリーダーシップを執って(今回は前回も参加している自分がやるべきだった)しっかりと話すべきだったが、
ついつい手を動かしてしまっておざなりになってしまった。
ついコードをいじりたくなるのを我慢してちゃんと計測する
急がば回れという言葉の通り、本来はしっかりと計測と分析をして、
アプリの性質とボトルネックを把握してチューニング方針を決め、
それから手を動かすべきだった。
しかし今回もついつい慌ててしまい、絶対やる系のチューニングをやって(本来はここで一旦作業を止めて計測と分析をするべきだった)
その後もぐだぐだ細かいチューニングを続けてしまった。
良かった事
- 前回よりは負荷が分かった
- 計測スキル/分析スキルの成長
- とはいえまだまだ
- 計測スキル/分析スキルの成長
- 前回よりは状況を把握しながら動けた
- 他の2人の間の席だったのが幸運?だった
- 他の人の画面を見たりして状況を把握しやすかった
- ただしそれを最大限活かすことが出来たかという問はNO
- 楽しみながら出来た
- アプリを最適化するのは楽しい
- コーヒーおいしかった
- @941++
お礼
#isucon2 悔しい結果に終わったけど、楽しかったです!運営非常に大変だったと思いますが非常に手が込んでて面白かったです!ありがとうございました!お疲れ様でした!
— かるぱねるらさん (@karupanerura) 11月 3, 2012
おつかれさまでした!