Я пытаюсь обновить нашу текущую конфигурацию Apache 2.4.9 с использования prefork до рабочего mpm. Я провожу простое нагрузочное тестирование с использованием jmeter, чтобы сравнить производительность между двумя. Мой первый тест довольно прост: просто получите одно изображение в формате gif, используя 10, 200, 300, 600, 1000, 1600 одновременных потоков / пользователей jmeter и загрузка сервера на определенное время, чтобы увидеть среднюю пропускную способность и время отклика, а также влияние на ЦП, память и т. д. Как и ожидалось, worker работает лучше, чем prefork, однако 0,25–0,5% запросов содержат ошибки независимо от количества потоков / пользователей jmeter. Jmeter сообщает, что он получает: «Целевой сервер не ответил». Я не вижу ошибок в http_error.log. На странице состояния системы и apache сообщается о большом количестве доступных ЦП и памяти. Я не получаю ошибок, используя prefork, выполняющий те же тесты. Моя рабочая конфигурация выглядит следующим образом:
ServerLimit 32
StartServers 8
MaxRequestWorkers 1600
MinSpareThreads 100
MaxSpareThreads 150
ThreadsPerChild 50
MaxConnectionsPerChild 1000
ThreadLimit 100
Я пробовал различные комбинации увеличения и уменьшения ServerLimit, ThreadsPerChild и т. Д., Но все же получаю небольшой процент ошибок с использованием рабочего mpm. Есть ли дополнительная директива модуля, которую мне нужно настроить? Это один из компромиссов при использовании воркера? Могу ли я включить дополнительное ведение журнала?
См. Следующие ресурсы: