MediaTemple(dv)サーバーでmpm_preforkを使用してApache2を実行しています。最近、サーバー構成に大きな変更はありません。 httpd.confは現在次のように設定されています。
MaxKeepAliveRequests 200
KeepAliveTimeout 15
<IfModule prefork.c>
StartServers 10
MinSpareServers 10
MaxSpareServers 10
MaxClients 200
MaxRequestsPerChild 4000
</IfModule>
しかし、Apacheが完全にクラッシュする直前に次のエラーが発生します。
[Thu Jun 04 18:30:24 2009] [warn-phpd] mmap cache can't open /var/www/vhosts/mydomain.com/httpdocs/filename.php - Too many open files in system (pid 19873)
Apacheがクラッシュしたときにこのサーバーを再起動するためにベビーシッターをすることに悩まされています。助けて?
このような行を追加することをお勧めしますulimit -n 16384ファイルの先頭に/etc/default/Apache2してから再起動します。
こちらもご覧ください リンク 。
「man proc」から:
/ proc/sys/fs/file-maxこのファイルは、すべてのプロセスで開くことができるファイルの数に対するシステム全体の制限を定義します。 (プロセスで使用できるプロセスごとの制限RLIMIT_NOFILEを、プロセスが使用できるファイルの数に設定できるsetrlimit(2)も参照してください。)ファイルハンドルの不足に関する多数のエラーメッセージが表示される場合は、この値を増やす:
echo 100000 > /proc/sys/fs/file-max The kernel constant NR_OPEN imposes an upper limit on the
file-maxに配置できる値。
If you increase /proc/sys/fs/file-max, be sure to
/ proc/sys/fs/inode-maxを/ proc/sys/fs/file-maxの新しい値の3〜4倍に増やすと、iノードが不足します。
**/proc/sys/fs/file-nr** This (read-only) file gives the number of files
現在オープンしています。これには3つの数値が含まれます。割り当てられたファイルハンドルの数。空きファイルハンドルの数。ファイルハンドルの最大数。カーネルはファイルハンドルを動的に割り当てますが、再び解放することはありません。割り当てられたファイルの数が最大に近い場合は、最大数を増やすことを検討する必要があります。空きファイルハンドルの数が多い場合は、ファイルハンドルの使用量がピークに達しているため、最大数を増やす必要はありません。
2番目の数値は、最初の数値が増加する必要があるものであるかどうかを確認するために検討する価値があります。その場合は、/ etc/sysctl.confで次のように設定できます。
fs.file-max=512000
これはsystem制限を設定することに注意してください。ユーザーごとの制限は 'ulimit'で設定されています。
Lsofをチェックして、実際に何が起こっているかを確認します。不当に高い制限を超えるのは、多くの場合、リークやその他のバグが原因です。
MediaTempleは Virtuozzoを使用 仮想化テクノロジーですか? VirtuozzoはOpenVZの上に構築されています。 OpenVZでは、開いているファイルの数に制限があります。多分あなたの封じ込めは限界に達していますか?
このコマンドを実行します(可能な場合)。
猫/ proc/user_beancounters
numfileリソースの値を確認します。
Apacheを起動する前に "ulimit -n 8192"を実行してみてください。おそらく最大オープンファイル制限に達しています。