Назад | Перейти на главную страницу

Проблема с httpready при перезапуске Apache httpd на FreeBSD?

Я запускаю Apache HTTPD 2.2 на своем веб-сервере FreeBSD 7.2. Я включил httpready и 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

Там есть ошибка для этого на bugzilla ASF, но это не похоже на то, что он скоро куда-то пойдет, поэтому пока я хочу выяснить, действительно ли это проблема (работает ли фильтр httpready, несмотря на предупреждения?), и если да, то есть обходной путь?

Я считаю, что это одно из двух. Либо Apache не закрывает предыдущее соединение перед открытием нового прослушивающего сокета (или он может даже повторно использовать старый), либо фильтр связывает использование ядра с PID вместо сокета (что в лучшем случае было бы странно). Определенно что-то не так, но я не уверен, в Apache это или в ядре. Проблема все еще существует в 9.0 и 2.2.20.

Поскольку, кажется, никто не беспокоился об этом за 2 года, и это легко обойти, используя сценарий rc вместо apachectl, я не собираюсь выслеживать его (извините).

В любом случае вы не хотите использовать фильтр httpready во FreeBSD в настоящее время. Рекомендую полностью отключить.

Просто откройте приглашение оболочки и введите следующую команду, чтобы загрузить accf_http под FreeBSD:

# kldload accf_http Перезагрузите apache:

# /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/