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