У меня есть httpd-сервер Apache, работающий на RHEL 5.3. Я использую этот сервер для обслуживания статического контента (изображений) для веб-сайта, работающего на другом экземпляре httpd. В общедоступном веб-каталоге есть несколько изображений, и все. Через некоторое время после запуска сервер начинает очень медленно передавать изображения в браузер и часто может зависать на несколько минут, пытаясь обслужить png 16x16.
Как лучше всего решить эту проблему?
Я бегал верхняя на коробке, чтобы проверить, достаточно ли свободной памяти и ЦП. Машина не переходит в свопинг, а процесс httpd занимает центральный процессор и память только на пару секунд, когда изображение запрашивается через браузер. Однако изображение часто возвращается только через несколько минут.
Перезапуск процесса httpd решает проблему, и изображения загружаются быстро.
Это похоже на простейшую возможную настройку веб-сервера. В чем может быть проблема?
Спасибо
ОБНОВИТЬ: настройки httpd.conf:
Timeout 10
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 15
ServerLimit 3
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Использовать mod_status для проверки и мониторинга состояния сервера. Думаю, большинство подключений ждут в статусе KeepAlive. Вы можете попробовать выключить его или уменьшить значение, например KeepAliveTimeout 4.
Предложения по диагностике:
Вы проверили процессор и память, но было бы неплохо также посмотреть пропускную способность диска и другую статистику (я предлагаю dstat -af). Вам нужны такие вещи, как большое количество операций чтения или записи на диск, множество переключений контекста или прерываний, другие измерения, которые сильно различаются между запуском сервера и его поведением в случае возникновения проблем.
Еще одна вещь, которую нужно проверить, - это выяснить, является ли поведение функцией прохождения времени, или количества запросов, или того и другого?
Проверьте, не связана ли это с сетью. Когда у сервера возникают проблемы (например, 10-секундные ответы), запросите изображение через интерфейс обратной связи. Если быстро вернется, посмотрите на сеть. Если он медленный, вы, вероятно, можете игнорировать сетевые проблемы за пределами вашего хоста.
Пара вопросов:
Вы настраивали файл Apache.conf? Какой Apache MPM вы используете?
Какие параметры в настоящее время установлены в файле Apache.conf для:
Timeout
KeepAlive
MaxKeepAliveRequests
KeepAliveTimeout
MinSpareServers
MaxSpareServers
StartServers
MaxClients
MaxRequestsPerChild