久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 网络服务 > Apache 2.0 中文文档 > 文件描述符的限制 文档讨论

Apache 2.0 中文文档

后退 文件描述符的限制 前进

2004-02-11 Apache 译者:kajaa http://www.douzhe.com/ApacheManual/
 
当使用了很多虚拟主机,而每个主机又使用了不同的日志文件时, Apache可能会遭遇耗尽文件描述符(有时也称为file handles)的困境。 Apache使用的文件描述符总数如下:每个不同的错误日志文件一个、 每个其他日志文件指令一个、再加10-20个作为内部使用。 Unix操作系统限制了每个进程可以使用的文件描述符数量。 典型上限是64个,但可以进行扩充,直至到达一个很大的硬限制为止(a large hard-limit)。

尽管Apache会试着增大限制,但如果发生以下情况,则这个机制无法起作用:

您的操作系统没有提供setrlimit()这个系统调用。
setrlimit(RLIMIT_NOFILE)调用无法在您的系统上正常工作(比如Solaris 2.3)
文件描述符的需求量已经超出了硬件的限制。
您的操作系统对文件描述符作出了其他限制。 比如说限制了stdio流只能使用256以下的文件描述符。(Solaris 2)
如果遇到了这样的问题,您可以这样解决:

减少日志文件的数量。不在<VirtualHost>配置段中指定日志文件, 而是只在主日志文件中进行记录。 (参见下述分解您的日志文件获得详情。)
如果您的系统因上述1、2条原因不能正常工作,可以在启动Apache之前, 用类似下述的脚本增大文件描述符的限制:
#!/bin/sh
ulimit -S -n 100
exec httpd

请参见描述符与Apache 文档中包括的更多关于文件描述符问题的细节和对应您的操作系统的解决方法。


分解您的日志文件

如果您想把多个虚拟主机的日志记录到同一个日志文件中,你可能会想事后把它们分开来以对不同的虚拟主机进行数据统计分析。您可用下述的方法达到目的。

首先,您需要将虚拟主机的信息放入log中。您可以用LogFormat指令和%v 变量来达到这个目的。在您的日志格式串的开头加入它们:

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

这将用日志的普通格式来创建一个日志文件。但会在每条记录前加上正式的虚拟主机名(就是在ServerName指令中定义的那个)。(参见配置日志格式 以获取如何配置您的日志文件的更多内容。)

当您想将您的日志文件按组成分开(每个虚拟主机一个日志文件)的时候,您可以使用split-logfile 程序来完成这个工作。您将在Apache发行版的support目录中找到这个程序。

用如下命令来运行这个程序:

split-logfile < /logs/multiple_vhost_log

当这个程序在给予一个虚拟主机日志文件作为参数的情况下,会为您日志文件中的每个虚拟主机建立一个文件。每个文件都以主机名.log这样的形式命名。
 
后退 目录 前进
深入研究虚拟主机的匹配 上一级 关于DNS和Apache
 
发表评论 关闭窗口
 相关内容
- 描述符与Apache 2004-02-11
 
 文档分类
操作系统
网络服务
编程语言
数据库
RFC请求注解
基础原理
软件使用
硬件参考
解决方案
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net