[Sysadmins] Ограничение количества клиентов на хост для Apache ITK
Konstantin Lepikhov
lakostis на unsafe.ru
Пт Окт 30 02:09:14 MSK 2015
Hi Vitaly!
On 10/29/15, at 11:46:00 PM you wrote:
> Задача следующая: нужно ограничить количество процессов Apache, которые
> запускаются для каждого
> пользователя (ITK позволяет разных пользователей, под которыми
> запускается процесс Apache), а ещё лучше —
> для каждого виртуального хоста.
>
> Базовая настройка к примеру такая:
> <IfModule itk.c>
> <------>StartServers 1
> <------>MinSpareServers 4
> <------>MaxSpareServers 20
> <------>MaxClients 20
> <------>MaxRequestsPerChild 15000
>
> Но MaxClients задаёт ограничение на количество процессов, общее для
> всех пользователей и хостов.
>
> Есть параметр MaxClientsVhost, который можно указывать в конфиге сайта.
> Но между ними большое отличие в поведении:
> При превышении MaxClients Apache просто не реагирует на коннекты к
> нему, таким образом накапливается очередь подключений,
> и пользователи при перегрузке испытывают замедление реакции сайта.
А цель какая? Ограничить кол-во подключений или кол-во процессов? Если
подключения, то да, limit_req в nginx для каждого vhost'а, если процессы,
то крутить cgroups.
>
> А ограничение по MaxClientsVhost сразу возвращает 503 при достижении
> предела подключений. Что вовсе не желательно, потому
> что для клиента выглядит как то, что сайт работает быстро, но иногда
> вместо страницы — ошибка.
>
> Может быть есть всем известное решение, которое я не знаю?
>
> Другой вариант — это научить nginx ошибку 503 не передавать клиенту, а
> ждать и пытаться получить от бэкенда более корректный ответ.
в этом случае nginx должен что-то ответить клиенту вместо 503 (поскольку
"ждать" он не умеет), что тоже не есть гуд.
--
WBR et al.
Подробная информация о списке рассылки Sysadmins