Hello! On Fri, Apr 17, 2015 at 09:15:21AM -0400, dwow wrote:
> Maxim Dounin Wrote: > ------------------------------------------------------- > > > Just a side note: не надо делать так, вместо этого правильно > > написать отдельный location, в котором и задать ограничение. > > вот это я не понял. > > у меня так > location /services/post/ { > limit_conn perservice 1; > proxy_pass bakcend; > } Тогда зачем у вас используется perl_set? Если limit_conn в других location'ах не включён, то для ограничения всех соединений в конкретном location'е - достаточно любого константного значения. > > Скорее всего проблема в том, что limit_conn органичивает не > > соединения на бекенду, а активные соединения. Соответственно, > > если кто-то сходил на бекенд, получил оттуда достаточно большой > > ответ и неспеша забирает его у nginx'а - ограничение будет > > продолжать срабатывать. Например, если клиент сделал запрос > > (ответ на который не помещается в буфер сокета), после чего пропал > > и на пакеты не отвечает - ограничение будет срабатывать, пока не > > случится send_timeout. > > Ага, и тогда через send_timeout (default: 60s), счетчик должен > декрементироваться и следующий запрос пойти на бекенд, так? Но этого не > происходит( Если send_timeout случится - то да. Если же вдруг какой-то клиент очерь медленно качает что-то большое - то процесс может занять бесконечное время. Ну и да, безусловно имеет смысл заглянуть в error log, и убедится, что рабочие процессы не завершаются аварийно. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru