Re: limit conn счетчик переполнение
Maxim Dounin
mdounin at mdounin.ru
Fri Apr 17 17:05:34 UTC 2015
Hello!
On Fri, Apr 17, 2015 at 12:28:03PM -0400, dwow wrote:
> Maxim Dounin Wrote:
> -------------------------------------------------------
> > Если limit_conn в других location'ах не включён, то для
> > ограничения всех соединений в конкретном location'е - достаточно
> > любого константного значения.
>
> Если не используется в др. локейшенах, то можно сделать вот так:
> limit_conn_zone "service" zone=perservice:10m;
> location /services/post/ {
> limit_conn perservice 1;
> proxy_pass bakcend;
> }
>
> и будет работать?
Да. В старых версиях (до nginx 1.7.6), возможно, потребуется
какая-нибудь константная переменная (например, $nginx_version), а
не просто строка.
> > Если send_timeout случится - то да. Если же вдруг какой-то клиент
> > очерь медленно качает что-то большое - то процесс может занять
> > бесконечное время.
> и как от таких избавляться?
В общем случае - никак, это обычные клиенты, которые просто
получают ответ. Собственно, как раз одно из преимуществ nginx'а
состоит в том, что он умеет таких клиентов эффективно
обслуживать, тратя на это минимум ресурсов. Ну и ограничивать с
помощью директивы limit_conn, не давая захватить слишком много
ресурсов сервера.
В вашем случае - проблема в том, что вы пытаетесь limit_conn
применить не по назначению, и такое использование приводит к тому,
что один медленный пользователь может легко заблокировать доступ
всем остальным.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru