问题分析:你可能到达你系统的某个资源的上限了。最有可能的是已经达到了预定义的文件描述符上限,有些库程序(例如gethostbyname()) 不能得到文件描述符的时候没有把它正确反馈给Apache,所以Apache没有办法自己发现这个问题。每个日志文件都需要一个文件描述符,如果每个虚拟主机分别定义了自己的错误日志和访问日志,那么需要两个文件描述符号,每个监听程序也要占用一个文件描述符号。一般每台机器支持的虚拟主机在128到250之间。
到达文件描述符上限之后,Apache会出现一些问题,比如以SIGSEGV dump core、 服务挂起或者服务带故障运行并且在错误日志中记录其他错误。最常见的就是CGI程序不能运行。
解决:
1. 减少监听进程;
如果Apache没有提供其他服务,那么只需要让它监听在80端口。
2. 减少日志文件的个数;
可以使用mod_log_config使得所有的记录都写入同一个文件,然后需要的时候再用脚本
把它分离。
3. 增大系统可用的文件描述符上限;
4. 减少虚拟主机的个数。