Оптимизация Apache для больших параллельных запросов и статических файлов

Одна очень полезная утилита является 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.

Я надеюсь, что это помогает.Удачи!

0
задан 13 April 2017 в 15:14
1 ответ

Мы наконец-то смогли решить эту проблему и снизить время отклика с нескольких секунд до нескольких миллисекунд, последовательно используя сам Apache.

Проблема не в Apache; это была настройка MaxClients по умолчанию, которая вызывала проблему. Мы увеличили параметр MaxClients / ServerLimit, и Apache смог эффективно обрабатывать множество одновременных запросов и доставлять статические файлы с небольшим увеличением использования памяти. (Нам потребовалось некоторое время, чтобы обнаружить это, поскольку мы использовали ApacheBench для стресс-тестирования, что не дало нам точного представления о том, что происходит.)

Мы все еще используем предварительный MPM, но также можем выглядеть у worker и event MPM в будущем. Но пока мы вполне довольны производительностью MPM перед форком.

Это хорошая справочная статья: MaxClients в apache. Как узнать размер моего процесса?

0
ответ дан 5 December 2019 в 15:47

Теги

Похожие вопросы