On Fri, Sep 07, 2001 at 12:37:07PM +0400, Igor Sysoev wrote:
> On Thu, 6 Sep 2001, Dmitriy Beloslyudtsev wrote:
>
> > Когда пользователь прерывает выдачу какой-либо cgi-программы нажав
> > кнопку Stop в броузере, то httpd посылает этой cgi-программе SIGINT.
> > Так бывает, когда cgi-программа была вызвана "напрямую". Если же
> > использовался промежуточный хост (frontend), работающий в режиме
> > ProxyPass, то работающая на backend cgi-программа ничего не получает
> > и продолжает работать как ни в чем не бывало.
> > Можно ли это вылечить? Хотелось бы чтобы ненужные cgi-программы
> > обнаруживали такое событие и могли бы честно закончиться.
>
> Вообще, судя по беглому коду mod_proxy в этом месте, при обрыве
> соединения с клиентом mod_proxy закрывает соединение с бэкендом,
> так что вроде бы разницы никакой.
> Единственное, если ответ кэшируется, то он может быть получен полностью.
Уже разобрались. Это ошибка в коде mod_proxy, если кэширование выключено
(а у нас стоит NoCache *), то нет выхода из цикла чтения (переменная ok
не переназначается). Файл src/modules/proxy/proxy_util.c, в районе строки 594.
> А зачем mod_proxy используется ?
Для балансирования нагрузки. Фронтенд сделан на двух машинах, работающих в
режиме ProxyPass. Самописный name server меряет загрузку на десятке backend машин
и выдает пару ip-адресов наименее загруженных машин. Единственное, что пришлось
менять в apache, это выключить кэширование name resolve, чтобы он каждый раз
к DNS обращался.
Дима
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.