@goooooch

Как узнать какой именно php скрипт приводит к ошибке или работает медленно?

На сервере несколько сайтов, работающих на разных цмс-системах (все пхпшные). Периодически по той или иной причине случается падение апача, нгинкс отдает 502 ошибку.
1. Как узнать на каком из хостов проблема?
2. Как узнать какой именно скрипт является причиной проблем, как найти проблемный файл?

Есть доступ с консоли по ssh.
  • Вопрос задан
  • 635 просмотров
Пригласить эксперта
Ответы на вопрос 1
copist
@copist
Empower people to give
Если есть возможность, замените Apache на PHP FPM SAPI, прилагающийся к PHP. При этом можно включить PHP slow log. В специальном логе будут появляться стек-трейсы процессов, которые работали больше заданного количества секунд именно в этот самый момент, то есть например, в 30ую секунду от запуска процесса.

В случае проблем рекомендуется делать slow log на все запросы, которые работают больше 1-2 секунд. Возможно дьявол кроется не в длинных процессах, а в огромном количестве мелких.

Также к PHP FPM прилагается встроенная система мониторинга. Можно посмотреть, сколько сейчас порождено процессов. Иногда их чрезвычайно много.

Если заменить Apache на PHP FPM невозможно, то путь исследования более длинный: нужно в настройках Apache настроить CustomLog с замером времени на выполнение. см. ответ на serverfault. Затем исследовать логи (там будут только URL запросов, без стрек-трейсов) и самостоятельно определять, что именно могло вызвать тормоза.

Можно подключить профилировщики XDebug + Webgrind или XHprof. Замеры можно делать на выборочных запросах, например только для пользователя с определённого IP или при наличии определённой куки. Отчёты будут очень детальные и будут включать замеры по всем внутренним вызовам от начала до завершения процесса, а не только в 30ую секунду, как делает php slow log.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы