[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[webdav-jp:0987] mod_encoding 付き httpd の肥大化
- To: webdav-jp@xxxxxxxx
- Subject: [webdav-jp:0987] mod_encoding 付き httpd の肥大化
- From: Kenji Wakamiya <wkenji@xxxxxxxxxxxxxx>
- Date: Tue, 27 Apr 2004 13:58:10 +0900
- Delivered-to: webdav-jp@Begi.net
- Posted: Tue, 27 Apr 2004 13:58:16 +0900
- User-agent: Mozilla Thunderbird 0.6b (Windows/20040425)
若宮と申します。
mod_encoding について少々困った症状に遭遇しております。メモリリーク
の類かなと思いつつ、Apache API にも疎くて手に負えなかったので;)、
ひとまずここに報告させて頂きます。mod_dav のあるなしによらないので
オフトピ気味ですが、mod_encoding のユーザが一番多いと思われるので…。
EncodingEngine が On の状態で GET や PROPFIND を受け続けていくと、
httpd のプロセスがゆっくりですが大きくなって行き、そのまま放っておく
と (数万アクセス後) スワップも食いつぶしてシステムがハングしたかの
ように重くなり、ほとんど DoS 状態;)に陥ってしまうのです。その後、
アクセスが止まっても正常なレスポンスに戻るには10〜20分程度かかります。
dmesg には "Out of Memory: Killed process 10482 (httpd)" のように、
カーネルが httpd を kill した旨のメッセージがぽつぽつと出ています。
自分でちびちびと DAV のテストをしていた間は気が付かなかったのですが、
ユーザがローカル HDD と DAV の間で同期ソフトなどを走らせるようになって
明らかになってきました。過去ログを見ても話題になってなさそうですので
少し不安なんですけど(-.-;。
当方では以下のサーバ環境にて再現性を確認しました。
- Fedora Core 1 + Apache 2.0.49 + mod_encoding-20021209(+Apache2版)
- Red Hat Linux 9 + Apache 2.0.49 + mod_encoding-20021209(+Apache2版)
- Red Hat Linux 9 + Apache 1.3.29 + mod_encoding-20021209
ユーザクライアントは主に WinXP の WebDAV リダイレクタですが、Perl で
書いたテストスクリプト (PROPFIND しまくる:) で確認しました。
mod_encoding は技評の WebDAV 本にある手順で make し、httpd.conf には
以下の設定を記述しています。
EncodingEngine On
NomalizeUsername On
SetServerEncoding UTF-8
DefaultClientEncoding JA-AUTO-SJIS-MS SJIS
AddClientEncoding "cadaver/" EUC-JP
Apache 2/1.3 には付属モジュール (の一部) だけを組み込んでおり、prefork
で動かしています。マシンは Xeon2.4GHz x2 + Mem2GB + Swap1GB のサーバや
Athlon 1.2GHz + Mem512MB + Swap1GB の自作機などで試しました。1つ気に
なるのは、Apache/prefork にはメモリリークなどの影響回避のために
MaxRequestsPerChild という設定がありますが、これも効かず、ずっと同じ
PID の httpd たちが太りながら裁いていることです。
*BSD だとそうならない、など情報があれば教えて下さい(_ _)。もし本当に
仕様外のメモリリークだとしたら、改善されることを期待しています(_ _)m。
--
// Kenji Wakamiya
// wkenji@xxxxxxxxxxxxxx