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

Задержка Apache при запросе веб-страниц во время высокого трафика

У меня есть сервер под управлением CentOS 5, MySQL 5.1 и PHP 5.2. У меня проблема, и я не знаю, с чего начать. Похоже, что в периоды высокого трафика у Apache иногда будет задержка (или тайм-аут) при получении запрошенной веб-страницы. Обычно я посещаю страницу, и она просто зависает при ее загрузке.

Проблема в том, что после этого я могу без проблем посетить 100 страниц, поэтому повторить это очень сложно. Я думаю, что причина в неправильной конфигурации, которая не позволяет обеспечить достаточное количество одновременных подключений к Apache или MySQL.

Не могли бы вы дать мне несколько советов о том, что я могу проверить, чтобы попытаться исключить некоторые из возможных причин?

взгляните на этот блок в своем httpd.conf

<IfModule prefork.c>
        StartServers 2
        MinSpareServers 4
        MaxSpareServers 8
        ServerLimit 75
        MaxClients 75
        MaxRequestsPerChild  1000
</IfModule>

затем во время одного из этих пиковых периодов выполните:

ps ax | grep httpd | wc -l 

должен дать вам количество запущенных процессов apache - если оно близко к директиве вашего сервера - увеличьте его в своем httpd.conf. ваше «отставание» звучит как время, необходимое apache, чтобы дождаться тайм-аута / смерти другого процесса и запуска нового.

-шон

Вы можете посмотреть на несколько вещей:

  • Изучите вывод из top как при низкой, так и при высокой нагрузке. Просмотрите его при низкой нагрузке, чтобы понять, когда все работает нормально, и сравнить их со статистикой высокой нагрузки. Посмотрите на такие вещи, как: потребление памяти, использование ЦП, использование ввода-вывода, какие процессы используют память / ЦП, есть ли какие-либо процессы в «непрерывном сне» («D» в столбце статистики).
  • Использовать netstat чтобы узнать, получает ли вы большое количество входящих запросов во время высокой загрузки. Ищите большое количество подключений с одним и тем же IP.
  • free, vmstat и iostat может дать вам больше информации о памяти и вводе-выводе. В частности, убедитесь, что вы не используете виртуальную память.
  • Включить Apache Статус сервера и проверьте, что делает сервер во время высокой загрузки. Это также может сказать вам, если один клиент плохо себя ведет (ищите несколько запросов с одним и тем же IP).
  • Если возможно, вы можете попробовать использовать программу тестирования, например ApacheBench (ab), чтобы протестировать свой сайт и попытаться продублировать проблему.
  • Проверьте соответствующие файлы журнала в /var/log/ включая Apache, MySQL, системные журналы и т. д. для любых очевидных сообщений об ошибках или предупреждениях.