Apache on CentOS で大量のバーチャルホストを設定したら次の様なエラーが出ました。
[Fri Sep 04 23:17:11 2009] [error] (24)Too many open files: could not open transfer log file /var/log/httpd/aaaaaaaaaauo-access_log.
[Fri Sep 04 23:18:18 2009] [error] (24)Too many open files: could not open transfer log file /var/log/httpd/aaaaaaaaaauo-access_log.
「開くファイルが多すぎるてこれ以上開けない」という内容っぽいです。どうやらCentOSが同時に開けるファイル数を越えてしまったようです。
# cat /proc/sys/fs/file-nr
1728 0 22560
左から、現在割り当てられているディスクリプタ数、使用中のディスクリプタ数、OSの上限ディスクリプタ数。
# vi /etc/sysctl.conf
-----sysctl.conf-----
fs.file-max = 45120
---------------
と設定し、
# sysctl -p
で適用。
再度確認。
# cat /proc/sys/fs/file-nr
1728 0 45120
■ユーザごとのディスクリプタの上限
# ulimit -n
1024
増やす。
最終行に追記。
# vi /etc/security/limits.conf
-----limits.conf-----
root soft nofile 44769
root hard nofile 44769
----------------------
再ログインして確認。
# ulimit -n
44769