Сервер Ec2 Ubuntu, на котором запущены apache и php. Мобильное приложение размещено на сервере. Приложение подключается к серверу через 80 порт. Проблема заключается в том, что apache ограничивает процессами до 150 в часы пик. ЦП почти на 100% простаивает, когда в apache 150 процессов. Увеличено максимальное количество клиентов до 500 на Prefork mpm. Но это все еще ограничивается 150 процессами. Ps aux и newrelic показывают ограничение процесса apache на уровне 150.
Проблема заключалась в том, что MaxRequestWorkers было 150 на /etc/apache2/mods-enabled/mpm_prefork.conf он не меняется после увеличения значения в apache conf. Теперь изменено на
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 1200
MaxRequestWorkers 1200
MaxConnectionsPerChild 1000
</IfModule>
-на /etc/apache2/mods-enabled/mpm_prefork.conf и теперь apache получает больше хитов.
Прочтите Документация Apache для модуля MPM. Похоже, вам нужно увеличить значение MaxRequestServers.
На странице также есть ссылка на документацию по настройке производительности.
Наверное, ServerLimit
переменная. Часто его еще нет в файле конфигурации по умолчанию, поэтому вам придется его добавить. Перезапустите Apache, чтобы он вступил в силу (перезагрузка не работает).
Я обычно делаю такой блок:
<IfModule mpm_prefork_module>
StartServers 150
MinSpareServers 150
MaxSpareServers 150
MaxClients 150
Serverlimit 150
MaxRequestsPerChild 10000
</IfModule>
Это отключает создание / уничтожение воркеров, в чем я не вижу смысла.