Назад | Перейти на главную страницу

Максимальное количество клиентов Apache Prefork не может превышать 256

Я управляю сервером Centos 6.6 (с истекшей лицензией cpanel / возможно, это не важно) с 8 ядрами и 64 ГБ ОЗУ, и мой HTTP-сервер становится очень медленным, когда он достигает от 250 до 300 одновременных подключений.

Когда я узнал о конфигурации предварительной вилки mpm как о решении для повышения производительности сервера, я поискал параметры в файле httpd.conf и всех его включениях, но там ничего не было. Похоже, мой apache использует параметры mpm по умолчанию.

Итак, я попытался добавить новую конфигурацию и заметил некоторые изменения в максимальном количестве клиентов на моей веб-странице mod_status. Когда я ставлю значения для ServerLimit и MaxClients меньше 256, отображение состояния сервера меняется, но когда я пробую значение больше 256, он просто останавливается на 256.

Вот краткая версия страницы состояния сервера с MaxClients и ServerLimit установлен в 257, однако он отображает ровно 256 слотов в 4 строках по 64 рабочих. копаться с http://apache.org/server-status

Server Version: Apache/2.4.10 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
Server MPM: prefork
Server Built: Jan 23 2015 21:04:30

--------------------------------------------------------------------
Current Time: Thursday, 12-Feb-2015 19:15:49 CET
Restart Time: Thursday, 12-Feb-2015 19:13:41 CET
Parent Server Config. Generation: 266
Parent Server MPM Generation: 265
Server uptime: 2 minutes 8 seconds
Server load: 0.76 0.66 0.63
Total accesses: 7771 - Total Traffic: 296.0 MB
CPU Usage: u3.76 s.62 cu77.6 cs7.05 - 69.6% CPU load
60.7 requests/sec - 2.3 MB/second - 39.0 kB/request
256 requests currently being processed, 0 idle workers

WWWWWKWKWKWWRRWWWKKWKKWWWKKWWWCKKKWWWWWKKWCWWWWWKKCWWKKWKCWKRCWW
WWWKKKKKWKWKWWWCWWKKWWRWKKRWWCWKWWWWKKKKKKWKCKWKKKKKWCWKCWWWKWRW
KWKKCKKKWKWKWWKLWWWKWWKCCCWKWWKKKKKWKWWKWWKKKWKWWCCRKKCCWKKWKWCW
CWKKRKKWWKRKKWWWWKWWWKWWKKWKKKWWWKWWWKLKWWKWWKKKKWWWKWWKRKWKWCWW

Как я могу решить эту проблему ? На самом деле мне нужно настроить параметры prefork, чтобы одновременно обслуживать 10000 клиентов. Я не могу использовать NGINX для обслуживания статических файлов.

Я также хочу получить больше информации о конфигурации MPM во время выполнения.

Какие-нибудь подсказки?


Изменить: вот сегмент конфигурации mpm, который я добавил

<IfModule prefork.c>
    Mutex default mpm-accept

# BEGIN : CUSTOM CONFIGURATION - all the following code is added by me
#    StartServers         6
#    MinSpareServers      6
#    MaxSpareServers     12

## Whatever the value (> 256) I enter for those two parameters, it doesn't exceed 256 in runtime (as shown in server-status page)
    ServerLimit        512 
    MaxClients         512
# END : CUSTOM CONFIGURATION
</IfModule>

С двумя указанными выше параметрами без комментариев я не мог понять, как увеличить лимит 256. Чего-то не хватает?

Я решил проблему.

Эта проблема : Значения ServerLimit и MaxClients выше 256 не вступают в силу, они остаются равными 256. Каждый раз, когда я меняю что-то в httpd.conf, а затем перезапускаю apache, используя команду:

# httpd restart

На самом деле ничего не изменилось.

Решение : Убедитесь, что httpd полностью остановился, а затем запустите его снова. Команда, которая сработала у меня вместо приведенной выше:

#httpd stop
#httpd start

Похоже, что все экземпляры сервера apache должны быть остановлены, чтобы учесть новые ограничения, установленные для MPM.

Спасибо за ответы и поправьте меня, если я ошибаюсь.

Вы должны играть с apache conf, mpm conf.

В этом блоге резюме, как делать математику: https://rudd-o.com/linux-and-free-software/tuning-an-apache-server-in-5-minutes