[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