我在 FreeBSD 7.2 网络服务器上运行 Apache HTTPD 2.2。我在我的 中启用了httpready
and ,如下所示:dataready
/boot/loader.conf
accf_http_load="YES"
accf_data_load="YES"
当服务器启动时效果很好,但是每当我重新启动(通过apachectl graceful
或apachectl restart
)时,我都会在我的/var/log/httpd-error.log
:
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'httpready' Accept Filter
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'dataready' Accept Filter
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'httpready' Accept Filter
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'dataready' Accept Filter
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'httpready' Accept Filter
[Thu Oct 08 13:32:53 2009] [warn] (22)Invalid argument: Failed to enable the 'httpready' Accept Filter
ASF bugzilla 上有一个错误,但看起来它不会很快出现,所以与此同时,我正在寻找这是否真的是一个问题(尽管 httpready 过滤器仍然有效警告?),如果是,是否有解决方法?
我相信这是两件事之一。要么 Apache 在打开新的侦听套接字之前没有关闭以前的连接(或者它甚至可能回收旧的),要么内核将过滤器使用与 PID 而不是套接字关联(这充其量是奇怪的)。绝对是不对的,但我不确定它是在 Apache 中还是在内核中。该问题在 9.0 和 2.2.20 中仍然存在。
由于 2 年内似乎没有人对此感到困扰,并且使用 rc 脚本而不是 apachectl 很容易解决它,所以我不打算追捕它(抱歉)。
无论如何,你现在不想在 FreeBSD 上使用 httpready 过滤器。我建议完全禁用它。
只需打开 shell 提示符并键入以下命令即可在 FreeBSD 下加载 accf_http :
# kldload accf_http
重启阿帕奇:# /usr/local/etc/rc.d/apache22 restart
更新 /boot/loader.conf 文件键入以下命令,以便在引导系统时加载驱动程序:
# echo 'accf_http_load="YES"' >> /boot/loader.conf
http://www.cyberciti.biz/faq/failed-to-enable-the-httpready-accept-filter/