SSIを使う(その3)


SSIやcgiを大量に使い始めると、サーバリソース不足でエラーが発生することがある。
OSがFreeBSDの場合だとKernel Configurationで対応できそうな気がするが、すでにMAXUSERSが250程度に設定されているサーバだとすると問題は別にあることになる。
Kernel-configurationの中で以下の所を設定する事がコメントとして記されているが..# options "MAXDSIZ='(256*1024*1024)'" options "DFLDSIZ='(256*1024*1024)'"
# 上記値は(バージョンによって異なるかも知れない)MAXUSERSの設定で決定されるようで、これを増やしても変化がない(バージョンもある,と言うべきか)httpサーバはnobody権限で動作している場合が多いのだが、FreeBSDは各ユーザ(nobodyも一つのユーザにすぎない)に割り当てるリソースが決まっている。
根本的には、これを増やさなければリソース不足によるhttpサーバエラーは回避できない。
FreeBSD2.2.6からは/etc/login.confでそれらの割り当てを変更できるようになった。
以下にデフォルト値と設定を変更したものを記す。
--Default-- default \ cputime=infinity \
datasize-cur=22M \
stacksize-cur=8M \
memorylocked-cur=10M \
memoryuse-cur=30M \
filesize=infinity \
coredumpsize=infinity \
maxproc-cur=64 \
openfiles-cur=64 \
priority=0 \
requirehome@ \
umask=022 \
tc=auth-defaults
これの値を変更したものが下記である。
default \
cputime=infinity \
datasize-cur=22M \
stacksize-cur=16M \
memorylocked-cur=10M \
memoryuse-cur=64M \
filesize=infinity \
coredumpsize=infinity \
maxproc-cur=512 \
openfiles-cur=1024 \
priority=0 \
requirehome@ \
umask=022 \
tc=auth-defaults
この変更は当然ながらroot権限を必要とする。
プロバイダのサーバを使っていて、リソースが足りないからと言ってこの変更を要求したら、それは筋違いというものだ。
まず第一に自分の利用しているSSIやcgiがサーバに余計な負荷をかけていないかを検証すべきである。
特にPerlで書かれたchatはCPU負荷が非常に高くなるので、これを複数個設置しているとすれば他のユーザに相当の迷惑をかけている可能性が高い。
unix環境を自由に使えるプロバイダも増えてきたが、自由を得るためには責任を持たなければいけない。
chatやBBSのcgiを公開しているサイトも多いが、これらは機能重視のあまりサーバ負荷を無視しているように思う。
またC言語で書かれたソフトの中には(ユーザの使用方法によって)簡単に暴走してしまうものもある。
SSI/cgiは便利で魅力的だが、甘いセキュリティとサーバに多大な負荷をかけることを忘れてはいけない。