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