Ограничение соединений с backend
Alex Vorona
voron at amhost.net
Mon Jun 15 13:46:50 MSD 2009
15.06.2009 12:33, Vladimir Latyshev wrote:
> В архиве нашел подобную тему, но решение неясно.
>
> Как известно, apach'у плохеет при большом количестве соединений.
> Предположим, нагрузочным тестированием выявлено, что некий сервис на
> apache+php тянет 100 одновременных обращений, а при большей нагрузке -
> ложится. MaxClients ставим на сотню, но лишние соединения все равно
> приходят, висят в очереди (ListenBacklog), и де-факто получаем для всех
> 100% клиентов слишком долгое ожидание. Как побороть это в апаче - так и
> не придумал. Хочется сделать так, чтобы те, кому "повезло" получали
> ответ быстро сразу, а остальные - вежливый отлуп (еще быстрее, хехе).
>
> Возможно ли с помощью nginx ограничить глобально число активных
> соединений с бэкэндом при использовании директивы proxy_pass, а всем
> "лишним" выдавать некую статику?
> Можно попробовать выкрутиться так:
>
> limit_zone conn $myvar 100k;
> set $myvar 1; # константа, то есть ограничение для всех (глобально)
> limit_conn conn 100;
> error_page 503 =200 /sorry.html;
>
> Но этот вариант не устраивает, так как медленные соединения заблокируют
> доступ остальным, а апач будет по сути простаивать.
> Что еще можно придумать? Подозреваю, что я не первый задаюсь этим
> вопросом и решение уже существует :)
limit_conn указывать только в location с proxy_pass http://apache;
More information about the nginx-ru
mailing list