Оптимизация Apache

Apache 2.x поддерживает подключаемые модели параллелизма, называемые многопроцессорными модулями (MPM). При сборке Apache вы должны выбрать MPM. Два важных MPM - это Worker MPM и Prefork MPM. Worker MPM использует несколько дочерних процессов, каждый из которых имеет несколько потоков.

Каждый поток обрабатывает одно соединение за раз. Worker обычно является хорошим выбором для серверов с высоким трафиком, поскольку он занимает меньше памяти, чем Prefork MPM. Prefork MPM использует несколько дочерних процессов с одним потоком в каждом. Каждый процесс обрабатывает одно соединение за раз. Prefork сравним по скорости с worker, но использует больше памяти. Беспоточная конструкция Prefork может использоваться с непотокобезопасными сторонними модулями, и ее легче отлаживать на платформах с плохой поддержкой отладки потоков.

Apache 2.2 работает с Prefork MPM по умолчанию.

KeepAlive

Расширение KeepAlive в HTTP/1.0 и функция постоянного соединения в HTTP/1.1 обеспечивают длительные HTTP-сессии. Они позволяют использовать одни и те же TCP-соединения для нескольких запросов. Тесты производительности показали уменьшение времени задержки.

KeepAliveTimeout определяет количество времени, в течение которого сервер ожидает последующих запросов на постоянном соединении. По умолчанию эта директива установлена на 5. Рекомендуется увеличить значение до 15 для оптимальной производительности.

Оценка MaxClients для оптимальной производительности

MaxClients устанавливает ограничение на одновременные запросы, поэтому попытки соединения, превышающие настроенное число MaxClients, ставятся в очередь. MaxClients по умолчанию составляет 256 для Prefork MPM и 400 (ServerLimit, умноженный на значение ThreadsPerChild) для Worker MPM. Blackboard рекомендует установить MaxClients на 200 в качестве отправной точки. При использовании Prefork MPM, ServerLimit всегда должен быть равен MaxClients.

Используйте приведенную ниже формулу для более точного расчета MaxClients. Формула соответствует настраиваемой мощности сервера приложений Tomcat. MaxClients не должно превышать MaxThreads, сконфигурированный в bbconfig.appserver.maxthreads.

MaxClients = minimum("Память RAM, выделенная веб-серверу Apache" / "Максимальный размер дочернего процесса")

Чтобы вычислить максимальный размер дочернего процесса, используйте следующую команду во время занятости сервера.

Также важно убедиться, что на сервере достаточно RAM памяти для Apache, используя приведенную ниже формулу:

"Память RAM, выделенная для веб-сервера Apache" = MaxClients * "Максимальный размер дочернего процесса".

Пример конфигурации для MPM Worker:

Пример конфигурации для Prefork MPM:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий