Одна очень полезная утилита является apachetop. Это похоже на вершину, но бдительно следит за журналом доступа Вашего Apache в реальное время. Можно отсортировать результаты по многим различным criterias - сумма запросов, сумма килобайтов, переданных и так далее.
Не знайте то, что продолжается в Вашем случае, но я определил, некоторые поврежденные переписывают правила с Apachetop. Например, в одном случае переписать правило указывало на локальную, но несуществующую страницу и сделало так путем выполнения перенаправления (R в строке RewriteRule). К сожалению, также Ошибочный Документ Apache был неправильно сконфигурирован- ErrorDocument 404 http://thesiteimtalkingabout.com/404.html
и это 404 страницы отсутствовало, также.
Этот вывод комбинации к растущему смерть опыту: на вид невинная страница заставляла Apache рекурсивно называть себя, и Apache стал полностью безразличным.
Вероятно, та военная история не помогает Вам вообще, таким образом, я указываю на Вас на несколько других методов отладки:
использовать strace
. Посмотрите pid неправильно себя ведущего процесса Apache от состояния сервера и затем сделайте что-то как strace -fF -s 128 -p thatbastardpid -o /tmp/wtf
и посмотрите, какого черта процесс делает путем чтения/tmp/wtf файла. Или, для наблюдения статистики, strace -fF -p thatbastardpid -c -o /tmp/wtf
Получите сетевой трафик с tcpdump
или wireshark
и посмотрите, существует ли что-то нечетное продолжение этого процесс PHP.
используйте Xdebug PHP вместе с (например), KCachegrind и посмотрите очень полную разбивку, что продолжает Ваш Сценарий PHP.
Я надеюсь, что это помогает.Удачи!
Мы наконец-то смогли решить эту проблему и снизить время отклика с нескольких секунд до нескольких миллисекунд, последовательно используя сам Apache.
Проблема не в Apache; это была настройка MaxClients по умолчанию, которая вызывала проблему. Мы увеличили параметр MaxClients / ServerLimit, и Apache смог эффективно обрабатывать множество одновременных запросов и доставлять статические файлы с небольшим увеличением использования памяти. (Нам потребовалось некоторое время, чтобы обнаружить это, поскольку мы использовали ApacheBench для стресс-тестирования, что не дало нам точного представления о том, что происходит.)
Мы все еще используем предварительный MPM, но также можем выглядеть у worker и event MPM в будущем. Но пока мы вполне довольны производительностью MPM перед форком.
Это хорошая справочная статья: MaxClients в apache. Как узнать размер моего процесса?