日記のサーバを移設 → 元に戻した
この日記はCPIのVPSサーバというサービスで動かしているんだけど、どうもサーバのリソース制限(メモリ)に引っかかっていてレスポンスが悪くなっている。 monit を使ってサービス監視していて、リソース制限に引っかかってサーバプロセスが落ちた場合でも自動的に再起動しているんだけど、アラートが頻発している状態が続いている。
なので、仮に CPI の VPS サーバから、以前設置していたさくらのレンタルサーバに戻してみた。 (CPI から mod_proxy を使ってさくら側に転送している)
サーバの応答時間
- CPI の VPS サーバ … 8852 msec
- さくらインターネット … 2622 msec
応答時間はかなり早くなったんだけど、今度は503エラーが発生するようになった。 CPUに負荷がかかっているんだろうか。
今の状況
- CPI の VPS サーバ(一番安いプラン) … メモリ不足が発生。
- さくらインターネット(スタンダード) … CPU制限が発生。
VPSサーバのメモリは180MBなんだけど、近いうちに倍に増強されるみたい。 早く安定させたいところだけど、メモリが増強されるまで様子を見るしかないかな。
追記
tDiary を 2.3.3.20090826 から svn の最新版に追従して、 ruby 1.9 をp0からp378に入れ替えたら、CPIでも応答時間が 8852 msec から 1231 msec へと劇的に改善された。 追従前後のプロファイル結果は以下の通り。
% cumulative self self total time seconds seconds calls ms/call ms/call name 51.59 10.86 10.86 191735 0.06 0.08 Proc#call 17.81 14.61 3.75 4 937.50 4812.50 Marshal.load 8.79 16.46 1.85 191799 0.01 0.01 Kernel.respond_to? 7.13 17.96 1.50 127837 0.01 0.01 String#encoding 5.56 19.13 1.17 3 390.00 390.00 Thread#join 3.42 19.85 0.72 127866 0.01 0.01 BasicObject#== 2.71 20.42 0.57 63934 0.01 0.01 String#force_encoding
% cumulative self self total time seconds seconds calls ms/call ms/call name 19.48 0.30 0.30 3 100.00 100.00 Thread#join 19.48 0.60 0.30 7 42.86 80.00 ERB::Compiler::SimpleScanner2#scan 18.18 0.88 0.28 212 1.32 5.38 Kernel.require 3.25 0.93 0.05 440 0.11 0.11 ERB::Compiler#content_dump 3.25 0.98 0.05 132 0.38 3.71 Array#each 3.25 1.03 0.05 107 0.47 2.80 BasicObject#instance_eval 2.60 1.07 0.04 933 0.04 0.04 Fixnum#>
ううん…。 Rubyが古かったのが原因なのか、tDiaryが古かったのが原因なのか、その両方なのか。 でも、これで安定するといいなぁ。
リソース制限内に収まるようになったので、さくらに戻すのはやめて、CPIで引き続き動かすことにした。
追記
プロファイルの結果を見ていると、改善前はProc#call, Kernel.respond_to?, String#encodingが20万回 (!) も呼ばれている。 昔からこうだったとは考えにくいので、 tDiary や Ruby のバージョンじゃなくて変に大量のデータがたまっていたのかもしれない。