我在FreeBSD 7.2 web服务器上运行Apache HTTPD 2.2。 我在/boot/loader.conf启用了httpready和dataready ,如下所示:
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上有一个bug ,但是看起来好像不是很快,所以在这期间,我正在寻找这个问题是否真的有问题(尽pipe如此,httpreadyfilter仍然工作警告?),如果是,是否有解决方法?
我相信这是两件事情之一。 在打开新的侦听套接字之前,Apache不会closures以前的连接(或者甚至可能会重新使用旧的套接字),或者使用PID而不是套接字(这在最好的情况下会是奇怪的)。 肯定是不对的,但我不确定它是否在Apache或内核。 问题依然存在于9.0和2.2.20。
由于没有人在2年内对此感到困扰,并且使用rc脚本而不是apachectl很容易解决,所以我不会追捕它(对不起)。
无论如何,你现在不想在FreeBSD上使用httpreadyfilter。 我build议完全禁用它。
只需打开shell提示符并键入以下命令以在FreeBSD下加载accf_http:
# kldload accf_http重启apache:
# /usr/local/etc/rc.d/apache22 restart usr # /usr/local/etc/rc.d/apache22 restart etc # /usr/local/etc/rc.d/apache22 restart rc.d # /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/