Re: Принудительный разрыв соединения
Evgeniy Berdnikov
bgx на protva.ru
Пт Дек 23 22:34:00 UTC 2016
On Fri, Dec 23, 2016 at 05:13:47PM -0500, Violence wrote:
> Evgeniy Berdnikov Wrote:
> -------------------------------------------------------
> >
> > Поясните, какой в этом смысл. Может быть, задачу можно решить иначе.
> > --
> > Eugene Berdnikov
>
> Большое количество пользователей сайтов, которые медленно качают файлы
> 100-150мб.
> При множестве reload, nginx оставляет много процессов, которые пытаются
> мягко завершить соединения.
Но это правильное поведение. Все варианты обрубания коннекций на уровне
socket API выливаются в FIN или RST, что приводит к сваливанию качалок
и в итоге к битым файлам у пользователей.
Есть только один "нормальный" вариант обрыва соединения: блокировка всех
исходящих пакетов, так чтобы коннекция у клиента умерла по таймауту
(тогда качалка сделает реконнект и продолжит тянуть файл). Но этот вариант
не реализуется через socket API, это нужно делать средствами ядра ОС,
т.е. внешними по отношению к nginx инструментами.
> Процессов-воркеров становится слишком много и это ест дико много памяти.
Не нужно заставлять пользователей расплачиваться за свои внутренние
проблемы. Лучше поищите другие варианты. Например, установите
административно политику, ограничивающую частоту релоадов nginx.
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru