のほほんと、catalystでさくさくっとアプリ作りましょうかねぇ、とESX上にubuntu入れてapacheとか入れて、cpan installをぼーーーーーーーっと眺めて、ちらっとコード書いて、さあ動かしてみましょうってしたら、アプリは上手く動くんだが、にゃんだかやけに遅い。
で、top見てみたら、メモリが全然足りん。うわー、見積が甘かったですにゃー、と1.5gほど割り当てて再挑戦・・・しても途中でスワップする。にゃ、にゃんて恐ろしい子・・・
と言うわけでこれは同時接続数とか制限しにゃいとダメですねと、apache.confのmpm_worker_moduleあたりで60スレ2子でmax120くらいまで制限してみた。
で、これでめでたしめでたしのつもりだったのだが、ここからが問題で。
使ってるとだんだん遅くにゃっていく。/server-statusにWが大量に居残る。とnetstatにTIME_WAITがものすごい数居る。30秒どころか30分経っても消えにゃい。
apache.confでtimeoutを減らしてみたけど全然変化無い。これはつまりmod_perlにゃのか、と、alrtでdieしてみるとか、負荷の大小とか、キャッシュのwrite時に競合が、とかあちこち調整しまくった結果、全然関係にゃいことが判明。
まるっきりお手上げににゃったのでしばし放置して考察。うう〜〜〜ん・・・
これはつまりあれか、もしかしてmpm_workerのスレッドとマルチCPUの相性みたいにゃ部分か、と想像でvmのCPUを1に減らしたらさっくり治った。がっかり。
でも1CPUだと心許にゃい気味にゃので、mpm_preforkにして4CPU運用に。あぁにゃんという無為にゃ時間・・・
にゃんかデータストアのレスポンスが悪い。
zpool statusしたら
pool: pool1
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
repaired.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
pool1 DEGRADED 0 0 0
mirror DEGRADED 0 0 0
c7t1d0 ONLINE 0 0 0
c7t2d0 FAULTED 3 15 0 too many errors
mirror ONLINE 0 0 0
c7t3d0 ONLINE 0 0 0
c7t4d0 ONLINE 0 0 0
mirror ONLINE 0 0 0
c7t5d0 ONLINE 0 0 0
c7t6d0 ONLINE 0 0 0
errors: No known data errors
とかいわれた
やっぱりメールとかでアラート飛ばすようにしとかにゃいと怖いにゃ
disk入れ替えて
zpool detach pool1 c7t2d0
zpool attach pool1 c7t1d0 c7t2d0
して完了