Websockets and Nginx reload
Maxim Dounin
mdounin at mdounin.ru
Mon Feb 17 11:11:00 UTC 2014
Hello!
On Fri, Feb 14, 2014 at 04:44:20PM -0500, Alex Koval wrote:
> Добрый день.
>
> Столкнулся с проблемой: при проксировании Websockets и релоаде Nginx старые
> воркеры продолжают работу пока открыто хотя бы одно проксируемое Websocket
> соединение. Есть ли какая-нибудь возможность разорвать Websocket соединения
> при релоаде?
Поскольку nginx не знает, что именно происходит в соединении - при
плавном завершении рабочих процессов (которое, в частности,
делается при релоаде) он его не трогает, пока соединение не
завершится само. То же относится, e.g., к запросам в процессе
исполнения.
Решение - либо переоткрывать соединения своими силами (по
соответствующему сигналу бекенду, или просто раз в N минут), либо
по истечению некоторого времени просить рабочие процессы
завершиться быстро (в этом случае незавершенные соединения будут
просто разорваны).
Подробности где-то тут:
http://nginx.org/ru/docs/control.html
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru