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 mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Reply via email to