ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: post_action


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: post_action
  • From: drmarker <drmarker@xxxxxxxxx>
  • Date: Wed, 18 Oct 2006 16:43:45 +0400
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=FyfXetOarFkhgnD3wukbKCe9XhND//wIxEfQUonhJkNDNSjI2vbPdWcEoqhdqbkbzMgFqNPgBgNDGbLbbJ7XReWZ06spB/TZQXlxeeMT2icD1EDxHXaoEjEUyqya6fcB6FqCy3zL9LLrWWBJwmEWRW3GyR3Yw96bZ+PlndI3f0o=
  • In-reply-to: <20061018141538.80C4.ALEXEY.BELANOV@xxxxxxxxx>
  • References: <20061018141538.80C4.ALEXEY.BELANOV@xxxxxxxxx>

Мы в результате всех плясок с бубном вокруг этой проблемы пришли к
выводу, что промежуточных решений нет и надо писать скрипт, который
будет хранить список сессий в memcached/whatever и периодически
верифицировать его по /proc/net/tcp. То есть, например, если
пользователь уперся в лимит, а проверка сессий в /proc/net/tcp была
больше, чем N-секунд назад - проверить еще раз.

Другой вариант - уговорить Игоря таки сделать лимиты (но не просто по
ip, понятное дело). Но это дело бесполезное :)

А любой post_action (хоть и _499) между FE и BE может теряться.
Особенно, если FE и BE разнесены и так далее.

On 10/18/06, Alexey V. Belanov <alexey.belanov@xxxxxxxxx> wrote:
Доброго дня.

Не так давно переключили одну из своих внутренних файлопомоек на работу
с post_action для динамического ограничения скоростей. Ограничивается
скорость на сессию и количество разрешенных сессий на пользователя.
php-шки работают на апаче, сессии хранятся в HEAP mysql таблицах,
memcached пока не получилось внести в существующую идеологию. В общем и
целом все работает как задумывалось за исключением "залипания" сессий. В
рассылке уже писали об этом, но как я понимаю ограничившись банальным
рестартом nginx-а с очисткой активных сессий дело дальше не пошло.

Ситуация же следующая: клиент отправляет запрос на старт очередной
сессии, nginx проксирует запрос на apache, тот какое-то время думает и
отдает ответ (время конечно можно здорово уменьшить использованием
memcached, но это ничего не решит). В это время пользователь по своей
инициативе (проверить просто - забить все место на диске и регетом
стартовать закачку) уже закрыл соединение с nginx, в логах которого
появляется 499 ошибка, но апач сессию стартовал и бекпоста по ней нет.
Сессия залипла.

Вопрос - можно ли предусмотреть бекпост в такой ситуации, для нас это
критично, да наверно и не только для нас. Пусть например будет
дополнительно post_action_499, в любом случае ситуация идет к тому чтобы
сделать это самостоятельно кривым хаком исходников nginx в обработчике
этой ошибки.

--
Alexey V. Belanov <alexey.belanov@xxxxxxxxx>





 




Copyright © Lexa Software, 1996-2009.