на Perl, PHP, JS.
Текущий PHP код на Laravel достался "по наследству".
Вопросы:
- Как понять, что именно тормозит запрос используя php-fpm.slow.log?
- Каким образом можно расширить уровень логирования посредством Laravel или PHP.
Детали:
- Laravel работает посредством php-fpm.
- В настройках php-fpm установлен таймаут для логирования slow запросов 20 секунд.
- В логих Laravel нету ничего.
- В MySQL slow логах нету ничего
- Блокирует какой-то одни процесс (не могу вычислить), после которого блокируются остальные.
Вот такой "информативный" trace лог php-fpm:
[05-Aug-2021 09:22:33] [pool www] pid 3235
script_filename = /var/www/api-service/public/index.php
[0x00007f7c40215130] fastcgi_finish_request() /var/www/darmen-api-service/vendor/symfony/http-foundation/Response.php:384
[0x00007f7c402150d0] send() /var/www/darmen-api-service/public/index.php:56
Спасибо.
сколько запросов паралельно
Можно подключить внешний сервис с профайлером например https://www.blackfire.io/ на время.
по логам есть понимание какой маршрут тормозит?
так у вас получается известно по каким роутам получаете слоу. возможно все они стучат к какому то внешнему сервису который ни да ни нет а просто коннект держит
+
Так как его вычислить? Если slow.log вот такой: [05-Aug-2021 09:22:33] [pool www] pid 3255 script_filename = /var/www/darmen-api-service/public/index.php [0x00007f7c40215130] fastcgi_finish_request() /var/www/darmen-api-service/vendor/symfony/http-foundation/Response.php:384 [0x00007f7c402150d0] send() /var/www/darmen-api-service/public/index.php:56
локально затестить можете? или только прод под нагрузкой есть? если можете - можно взять 1 запрос, отключить слоу, разбить его на несколько частей, для каждой части записать время выполнения и посмотреть кто там такой тормоз. далее эту самую часть бьем еще, и еще и еще, пока не найдем ту самую строку которая и вызывает проблему
По идее в slow log должен быть trace. И он такой: [05-Aug-2021 09:22:33] [pool www] pid 3235 script_filename = /var/www/api-service/public/index.php [0x00007f7c40215130] fastcgi_finish_request() /var/www/api-service/vendor/symfony/http-foundation/Response.php:384 [0x00007f7c402150d0] send() /var/www/darmen-api-service/public/index.php:56 Я не могу понять, что значить это tarce log?
вообще без понятия. еще можно поставить barryvdh/laravel-debugbar если запросы идут с вэба а не по апи. там есть таймлайн, возможно в нем увидите. есть ли такая штука в телескопе - хз, не пользовался
Это API.
Обсуждают сегодня