Как мониторить работу скрипта PHP?

Используется стек php-fpm + nginx + redis + mysql, раньше проблем не возникало, но теперь ловлю
upstream timed out (110: Connection timed out) while reading response header from upstream
в /var/log/nginx/error.log
htop показывает, что ничего не загружено, все как и раньше. В access логе так же ничего сверхъестественного, значит проблема не в количестве запросов. Код так же не редактировался, поэтому, полагаю, где-то всплыл баг, который каким-то образом блочит весь php-fpm.
Есть крон, который каждую минуту крутит определенный скрипт. Можно было бы свалить все на него и пойти копаться в коде, но нет, таймаут происходит даже когда скрипты в кроне не отрабатывают. На крайний случай думал что проблемы с cloudflare, через который работает сайт, но нет, даже доступ по ip напрямую не исправляет проблему.
Перезагрузки всех и всего не помогают, ошибка всплывает случайным образом в случайное время, поэтому хочу узнать, каким образом можно мониторить отработку php скрипта без изменения кода и возможно ли сделать такое, дабы узнать тайминги функций и понять в чем проблема.
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
Vamp
@Vamp
Начните с настройки директив slowlog в конфиге fpm.

request_slowlog_timeout mixed
The timeout for serving a single request after which a PHP backtrace will be dumped to the 'slowlog' file. A value of '0' means 'Off'. Available units: s(econds)(default), m(inutes), h(ours), or d(ays). Default value: 0.

slowlog string
The log file for slow requests. Default value: #INSTALL_PREFIX#/log/php-fpm.log.slow.

Как только какой-либо скрипт работает дольше request_slowlog_timeout, снимается стек трейс данного скрипта и записывается в текстовый файл по пути, указанному в slowlog. Если тормозит какое-то конкретное место, то в стек трейсе будет видно какое. Например, если тормозит база, то в slow логе в топе стек трейса будет, например, вызов PDOStatement::execute.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект