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 mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/sysadmins
