post_action

Alexey V. Belanov alexey.belanov at gmail.com
Wed Oct 18 15:32:30 MSD 2006


Доброго дня.

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

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

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

-- 
Alexey V. Belanov <alexey.belanov at gmail.com>






More information about the nginx-ru mailing list