По умолчанию веб-сервер Apache настроен на поддержку 150 одновременных соединений. При увеличении посещаемости вашего сайта Apache начнет отбрасывать дополнительные запросы, что приведет к ухудшению качества обслуживания клиентов. Вот как увеличить максимальное количество соединений в Apache, чтобы поддерживать сайты с высокой посещаемостью.
Как увеличить максимальное количество подключений в Apache
Ниже описаны шаги для увеличения максимального количества подключений в Apache.
1. Установите модуль MPM
Нам необходимо установить модуль MPM Apache, чтобы иметь возможность обслуживать большое количество одновременных соединений. Для этого можно использовать модуль mpm_worker или mpm_event, вместо модуля mpm_prefork, который потребляет много памяти.
Вы можете легко установить модуль MPM в Apache с помощью следующей команды
CentOS или RHEL: измените /etc/httpd/conf.modules.d/00-mpm.conf
Закомментируйте строку LoadModule mpm_prefork_module modules/mod_mpm_prefork.so, добавив перед ней #.
Откомментируйте строку LoadModule mpm_worker_module modules/mod_mpm_worker.so, убрав # перед ней.
Ubuntu/Debian: используйте a2dismod / a2enmod для отключения mpm_prefork и включения mpm_worker
1 2 | a2dismod mpm_prefork a2enmod mpm_worker |
2. Увеличение максимального количества подключений в Apache
Откройте файл конфигурации MPM:
CentOS/RHEL
1 | sudo nano /etc/httpd/conf.modules.d/00-mpm.conf |
Ubuntu/Debian
1 | sudo nano /etc/apache2/mods-available/mpm_worker.conf |
Вы увидите следующие строки
1 2 3 4 5 | StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 0 |
Вы можете изменить их на следующую конфигурацию, которая поддерживает до 8000 одновременных пользователей
1 2 3 4 5 6 7 8 9 10 | <IfModule mpm_worker_module> ServerLimit 250 StartServers 10 MinSpareThreads 75 MaxSpareThreads 250 ThreadLimit 64 ThreadsPerChild 32 MaxRequestWorkers 8000 MaxConnectionsPerChild 10000 </IfModule> |
Вы также можете добавить приведенные выше строки в файл конфигурации веб-сервера Apache или файл конфигурации виртуального хоста.
Давайте быстро рассмотрим параметры
- Serverlimit - Максимальное количество процессов Apache
- StartServers - Количество процессов, запускаемых при запуске Apache
- MinSpareThreads/MaxSpareThreads - количество потоков, которые должны простаивать, не будучи убитыми
- ThreadsPerChild - количество потоков на процесс
- MaxRequestWorkers - Количество поддерживаемых одновременных соединений. Это основная директива, которую необходимо изменить для увеличения максимального количества соединений в Apache
- MaxConnectionsPerChild - количество соединений, которое должно быть обработано каждым дочерним процессом, прежде чем он будет убит
3. Перезапустите сервер Apache
Перезапустите веб-сервер Apache, чтобы применить изменения.
Ubuntu/Debian
1 | sudo service apache2 restart |
CentOS/Redhat/Fedora
1 | sudo service httpd restart |