ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ограничение соедин ений с backend



At Mon, 15 Jun 2009 13:33:26 +0400,
Vladimir Latyshev <latysheff@xxxxxxxxx> wrote:
> 
> [1  <text/plain; KOI8-R (base64)>]
> 
> [2  <text/html; KOI8-R (base64)>]
> В архиве нашел подобную тему, но решение неясно.
> 
> Как известно, 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;
> 
> Но этот вариант не устраивает, так как медленные соединения заблокируют 
> доступ остальным,
> а апач будет по сути простаивать.
> Что еще можно придумать? Подозреваю, что я не первый задаюсь этим вопросом и 
> решение уже
> существует :)
> 

если apache и nginx на одной машине, то можно взять в руки:
http://catap.ru/blog/2009/05/29/nginx-loadavg_-and-more-or-less-in-if/

И сделать, что-то типо:

if ($loadavg_1m > 5) {
    return 503;
}


-- 
wbr, Kirill



 




Copyright © Lexa Software, 1996-2009.