確かに1日2万件のリクエストはそれほど多くはありませんが、繁忙期には発生するが夜間などは発生せず、通常に配信されており、時間のかかるダウンロードサービスである場合には、やはり負荷は非常に大きくなります。
Apache がリクエストに対して開くことを許可するプロセスの最大数は 256 で、MaxClients の制限も 256 です。ユーザーが多すぎる場合、ユーザーには「応答を待っています...」というメッセージしか表示されません。次に利用可能なプロセスが表示されるまで待ちます。この最大数は Apache プログラムによって決定されます。NT バージョンでは 1024 まで指定できますが、Unix バージョンでは 256 までしか指定できません。これは src/include/httpd.h の
で確認できます:
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#else
#define HARD_SERVER_LIMIT 256
#endif
#endif
システムをコンパイルする前に、1024 に調整できます。 httpd.conf で対応する設定を
変更することを忘れないでください。デフォルトは 150 のようです。以下のマシンに関しては、512 に設定すると死亡します
。これ以上になるとシステムが耐えられなくなります。
さらに、一部のシステムでは、ユーザーの最大プロセス数も制限されています。 ulimit -u
を使用して確認できます。 Linux は通常 256 です。したがって、Apache にこの数値を本当に超えてもらいたい場合は、
パラメータを調整する必要があります:
ulimit -u unlimited
このパラメータは Apache を実行する前に変更する必要があるため、apachectl に追加することをお勧めします。
case $ARG in
start)
if [ $RUNNING -eq 1 ]; then
echo "$0 $ARG: httpd (pid $PID) すでに実行中"
続行
start) で
case $ARG に変更されました)
ulimit -u unlimited
if [ $RUNNING -eq 1 ]; then
echo "$0 $ARG: httpd (pid $PID) selected実行中"
続行