文件 Descriptors 限制

当使用大量虚拟主机时,如果每个虚拟主机指定不同的日志文件,则 Apache 可能会耗尽可用的文件 Descriptors(有时称为文件句柄)。对于每个不同的错误日志文件,Apache 使用的文件 Descriptors 总数为一个,对于每个其他日志文件伪指令,总数为 10,供内部使用。 Unix os 限制了进程可以使用的文件 Descriptors 的数量。该限制通常为 64,通常可以增加到较大的硬限制。

尽管 Apache 尝试根据需要增加限制,但在以下情况下可能无法使用:

如果出现问题,您可以:

#!/bin/sh ulimit -S -n 100 exec httpd

拆分日志文件

如果要将多个虚拟主机记录到同一日志文件,则可能需要在以后拆分日志文件,以便对各种虚拟主机进行统计分析。这可以通过以下方式实现。

首先,您需要将虚拟主机信息添加到日志条目中。可以使用LogFormat指令和%v变量来完成此操作。将此添加到您的日志格式字符串的开头:

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
CustomLog logs/multiple_vhost_log vhost

这将以通用日志格式创建一个日志文件,但是在每一行之前都添加了规范的虚拟主机(无论出现在ServerName指令中)。 (有关自定义日志文件的更多信息,请参见mod_log_config。)

当您希望将日志文件拆分为各个组成部分(每个虚拟主机一个文件)时,可以使用程序split-logfile完成此操作。您可以在 Apache 发行版的support目录中找到该程序。

使用以下命令运行该程序:

split-logfile < /logs/multiple_vhost_log

使用您的 vhost 日志文件的名称运行该程序时,它将为出现在日志文件中的每个虚拟主机生成一个文件。每个文件将称为hostname.log

首页