Задача следующая: нужно ограничить количество процессов Apache, которые запускаются для каждого пользователя (ITK позволяет разных пользователей, под которыми запускается процесс Apache), а ещё лучше —
для каждого виртуального хоста.

Базовая настройка к примеру такая:
<IfModule itk.c>
<------>StartServers          1
<------>MinSpareServers       4
<------>MaxSpareServers       20
<------>MaxClients            20
<------>MaxRequestsPerChild   15000

Но MaxClients задаёт ограничение на количество процессов, общее для всех пользователей и хостов.

Есть параметр MaxClientsVhost, который можно указывать в конфиге сайта. Но между ними большое отличие в поведении: При превышении MaxClients Apache просто не реагирует на коннекты к нему, таким образом накапливается очередь подключений,
и пользователи при перегрузке испытывают замедление реакции сайта.

А ограничение по MaxClientsVhost сразу возвращает 503 при достижении предела подключений. Что вовсе не желательно, потому что для клиента выглядит как то, что сайт работает быстро, но иногда вместо страницы — ошибка.

Может быть есть всем известное решение, которое я не знаю?

Другой вариант — это научить nginx ошибку 503 не передавать клиенту, а ждать и пытаться получить от бэкенда более корректный ответ.

--
С уважением,
Виталий Липатов,
Etersoft
_______________________________________________
Sysadmins mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/sysadmins

Ответить