<-
Apache > HTTP 服务器 > 文档 > 版本 2.4 > 虚拟主机

文件描述符限制

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

当使用大量虚拟主机时,如果每个虚拟主机都指定了不同的日志文件,Apache 可能会耗尽可用文件描述符(有时称为 文件句柄)。Apache 使用的文件描述符总数为每个不同的错误日志文件一个,每个其他日志文件指令一个,再加上 10-20 个用于内部使用。Unix 操作系统限制了进程可以使用文件描述符的数量;该限制通常为 64,并且通常可以增加到一个较大的硬限制。

虽然 Apache 尝试根据需要增加限制,但这可能不起作用,如果

  1. 您的系统不提供 setrlimit() 系统调用。
  2. setrlimit(RLIMIT_NOFILE) 调用在您的系统上不起作用(例如 Solaris 2.3)
  3. 所需的文件描述符数量超过了硬限制。
  4. 您的系统对文件描述符施加了其他限制,例如仅使用低于 256 的文件描述符的 stdio 流的限制。(Solaris 2)

如果出现问题,您可以

top

拆分日志文件

如果您想将多个虚拟主机记录到同一个日志文件中,您可能希望事后拆分日志文件以便对各个虚拟主机进行统计分析。这可以通过以下方式实现。

首先,您需要将虚拟主机信息添加到日志条目中。这可以使用 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

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

top

评论

注意
这不是一个问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果我们的版主认为它们已实施或被认为无效/不相关,则可能会被删除。有关如何管理 Apache HTTP Server 的问题应发送到我们的 IRC 频道 #httpd(在 Libera.chat 上)或发送到我们的 邮件列表