2005年02月01日

コメントが書き込めない不具合

コメント書き込みに対するシステムの応答が異様に遅いようでご迷惑をおかけしてます。これだけ遅いとちょっと書けたものではありませんね。

何でこんなことになっているのかちょっと調べてみました。

まず、このBlogで使用しているシステムを列挙してみます。

  • (1) ネットワークデバイス(LANカードやらモデムやら色々)
  • (2) OS Windows XP Professional SP2
  • (3) Webサーバ アプリケーション Apache 2.0.52(Win32)
  • (4) Perl ActivePerl v5.6.1
  • (5) Blogツール Movable Type 3.122-ja
  • (6) データベース MySQL 4.0.23
  • (7) ディスクデバイス(IDE接続のHDDとIEEE1394接続のHDD)

色々調査した結果、以下のことが分かりました。

  • (A) 外部からではなく、内部からWebサーバにFast Ethernetで繋いでもコメント書き込みは異様に遅いです。
  • (B) ネットワーク共有(SMB)でWebサーバとファイルをやり取りする分には十分に高速です。
  • (C) HDBenchでHDDの速度を見ても十分に高速です。
  • (D) コメントを書き込むと「Perl Command Line Interpreter はエラーが発生し閉じられる必要がありました。」というエラーメッセージがWebサーバの画面に表示されます(なんじゃそりゃ!)。
  • (E) Webサーバのエラーログには以下のメッセージが残っています
    DBD::mysql::db disconnect failed: handle 2 is owned by thread 15af3a8 not current thread 430e8ec (handles can't be shared between threads and your driver may need a CLONE method added) at XXX/mt/lib/MT/ObjectDriver/DBI.pm line 327.
  • (F) Webサーバのエラーログには以下のメッセージが残ることもあります。
    (70007)The timeout specified has expired: ap_content_length_filter: apr_bucket_read() failed
  • (G) MySQLを使う前にはBerkeley DBを使っていました。MySQLに変えたことにより、Movable Typeのコメント書き込み以外の機能(エントリ編集やサイトの再構築)はだいぶ快適になりました。
  • (H) Berkeley DBを使っていたころは、(D)(E)(F)のエラーは出ませんでした。

さて考察してみます。
まず、(A)(B)より(1)に問題がある可能性は低そうです。
また、(B)(C)より、(2)(7)に問題がある可能性も低そうです。
(D)は怪しいですね。怪しすぎます。これだけ見ると原因は(4)ではないかという気がします。
(E)より(5)も怪しくなってきました。
(F)はちょっと意味不明。(D)か(E)の余波を受けている気がします。
(G)より(6)は問題ないのではないかと思います。
でも(H)により(6)もちょっと怪しくなってきました。
しかし(6)は実績のあるアプリケーションなので、(5)が(6)を使っている部分を先に疑った方が良さそうです。
(3)は話に出てきてませんが、これも実績のあるアプリケーションなのでとりあえず置いておきます。

というわけで残った候補は(4)(5)です。
ここから先のカラクリは良く分かりませんが、(5)が(4)が抱えているバグを掘り出してしまってこんな現象になっている、というあたりでしょうかね。コメント書き込み以外はうまく動いているわけですから、(5)がなんらかの対応を行うことにより本問題も回避できそうな気がします。
とりあえずSix ApartさんからリリースされたMovable Type3.15の日本語版を入れてみて、問題が解決されていなければエラーメッセージを揃えてサポートに突撃、ということにしようと思います。

投稿者 MASATO : 2005年02月01日 00:02 | トラックバック
コメント

 初めまして。先日から小生とこでもコメントができなくなってまして、かなり悩んでたんですが、検索でこちらがヒットし、無事解決に至りました。感謝です。

Posted by: かたおか : 2005年02月05日 21:01

GD使っているカウンタはActivePerl 5.6.xで動かしてMovableTypeはActivePerl 5.8.xで動かすようにしてみました。
ちょっと使ってみた限りでは問題なさそうです。

Posted by: MASATO : 2005年02月01日 21:27

cさん情報どうもありがとうございます。
ActivePerl 5.8.xはまだモジュールの品揃えが悪いようで(GD等)ちょっと敬遠していました。
しかしこの問題が解決するのであれば使う価値はあると思います。
5.6.xと使い分けられるかどうかちょっと試してみます。

Posted by: MASATO : 2005年02月01日 20:49

はじめまして
ActivePerlのバージョンを5.8.xにすると問題は解決するのではないかと思います。
考慮してみてください。

Posted by: c : 2005年02月01日 15:26

Movable Type 3.15でもうまく動きませんでした。

MovableTypeを一部書き換えてみたところ、
多少はマシになりましたので今はその状態で動かしています。

Posted by: MASATO : 2005年02月01日 01:37
コメントする









名前、アドレスを登録しますか?