Я хочу увеличить MaxClient для сервера Apache с помощью модуля mpm_prefork. Я использую только веб-сервер на выделенном сервере с 256 ГБ ОЗУ. Я не запускаю никакую другую программу на сервере.
Я использую HTTP API веб-сервиса на сервере, который разработан с использованием PHP, который будет вызываться 1000 раз в секунду.
Я использую CentOS 7
Спецификация сервера
Intel® Xeon® E5-1650 v3 Hexa-Core Haswell,
ОЗУ 256 ГБ ОЗУ DDR4 ECC,
Жесткий диск 2 x 480 ГБ SSD (Software-RAID 1),
Соединение 1 Гбит / с
1) Какое максимальное значение я могу использовать для MaxClient? Могу ли я использовать 1000?
2) Я использую версию сервера: Apache / 2.4.6 (CentOS). Я не смог найти файл для изменения MaxClient. Где я могу это изменить? Файл /etc/httpd/conf/httpd.conf не имеет настройки MaxClient. Также файл /etc/httpd/conf.modules.d/00-mpm.conf также не имеет настройки MaxClient
Я новичок на сервере Apache. Пожалуйста, помогите мне сделать это. Я пробовал 2 дня, но не нашел решения
Спасибо
Он не включен в конфигурацию по умолчанию, которая поставляется с CentOS 7. Добавьте такой блок в верхней части вашего httpd.conf перед LoadModule
директивы (это то, что я использую для сервера с более низкой спецификацией):
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxRequestWorkers 200
MaxConnectionsPerChild 1000
</IfModule>
MaxClients
был переименован MaxRequestWorkers
в Apache 2.4. я держу ServerLimit
немного выше, так как ServerLimit
не может быть изменен при перезагрузке, но MaxRequestWorkers
Можно. ServerLimit
устанавливает максимальное значение для MaxRequestWorkers
, Итак, выкладываю ServerLimit
немного выше дает вам возможность для увеличения MaxRequestWorkers
в чрезвычайной ситуации без отключения клиентов.
Выше, что я использую на моем сервере. Я уверен, что со спецификацией у вас есть значение 1000 для MaxRequestWorkers
будет хорошо. Возможно поставить ServerLimit
в 1200
Увидеть документация для ServerLimit.
Вы также захотите увеличить другие значения. Возможно 40 для StartServers
25 для MinSpareServers
и 100 для MaxSpareServers
,
Я люблю держать MaxConnectionsPerChild
на 1000, так что если есть какие-либо утечки памяти, они не вызовут больших проблем. Я предлагаю вам сохранить ту же ценность.
пожалуйста исследовать все директивы и принимать собственные решения. Надеюсь, что вышесказанное поможет вам начать.
Собирая все это вместе, я предлагаю вам использовать:
<IfModule prefork.c>
StartServers 40
MinSpareServers 25
MaxSpareServers 100
ServerLimit 1200
MaxRequestWorkers 1000
MaxConnectionsPerChild 1000
</IfModule>
Следите за ресурсами сервера, как только вы его установили, и сервер уже используется. Вы, вероятно, можете использовать значительно более высокие значения, чем это.
Еще одна важная проблема
Я настоятельно рекомендую вам отключить LoadModule
директивы для любых модулей, которые вы не используете (просто закомментируйте их). Это значительно снизит объем памяти каждого серверного процесса и позволит вам запускать больше из них. В конфигурации по умолчанию загружено много модулей, которые вам не понадобятся. Просмотрите их по одному и Google для того, что они делают. Это повысит эффективность использования вашего ресурса.
Других решений пока нет …