Как отслеживать медленные процессы PHP? - PullRequest
5 голосов
/ 19 декабря 2011

Я запускаю PHP-FPM с Nginx. У меня есть множество различных сценариев на моих серверах. Иногда возникает проблема с кодами PHP, и этот процесс занимает слишком много времени. Это потребляет все доступные дочерние элементы PHP-FPM; таким образом, мешает другим php-скриптам.

Как настроить журнал PHP-FPM для записи медленных процессов php, когда мы отслеживаем медленные запросы mysql, чтобы определить, какой скрипт вызывает проблему?

Ответы [ 5 ]

6 голосов
/ 20 февраля 2012

php-fpm поддерживает функцию медленной регистрации php-скрипта

в вашем php-fpm.conf, вам нужно добавить 2 переменные

request_slowlog_timeout и slowlog

в соответствии с php-fpm wiki

;Тайм-аут для обслуживания одного запроса, после которого будет возвращена трассировка PHP;выгружается в файл 'slowlog'.Значение «0» означает «выключено».;Доступные единицы измерения: s (секунды) (по умолчанию), m (в секундах), h (наши) или d (ays);Значение по умолчанию: 0

request_slowlog_timeout = 30

;Файл журнала для медленных запросов;Значение по умолчанию: не установлено;Примечание: slowlog является обязательным, если для request_slowlog_timeout установлено значение

slowlog = log/$pool.log.slow

для отслеживания запросов mysql. Я использую этот запрос для получения списка запросов, выполняющихся на моем компьютере

show full processlist;
4 голосов
/ 19 декабря 2011

Сегодня я второй раз рекомендую об / мин

Это инструмент мониторинга производительности приложений. Первоначально это было убийственное приложение для Rails, но позже они начали поддерживать PHP.

Он может контролировать ваши скрипты, отслеживать медленные, отображать все виды графиков.

Он также заботится о медленном SQL (и вы даже можете увидеть планы объяснения из инструмента!)

Вы обязательно должны проверить это.

2 голосов
/ 19 декабря 2011

Как настроить журнал PHP-FPM

Нет. Используйте nginx log_format для записи продолжительности каждого HTTP-запроса с точностью до миллисекунды.

когда мы отслеживаем медленные MySQL запросы

То есть вы уже отбираете буквальные значения и расставляете приоритеты на основе произведения частоты и прошедшего времени?

1 голос
/ 26 сентября 2013

Аппгати может помочь здесь.

Это не решение вашей проблемы, но оно может дать некоторые полезные сведения о том, где возникла задержка. Возможно, у вас потеря данных или потеря времени при создании DOM. Этот сценарий дает представление о потенциальных проблемных областях, которые затем могут быть специально нацелены.

Это также может пригодиться для определения производительности конкретной функции в скрипте.

Пример вывода:

Array
(
[Clock time in seconds] => 1.9502429962158
[Time taken in User Mode in seconds] => 0.632039
[Time taken in System Mode in seconds] => 0.024001
[Total time taken in Kernel in seconds] => 0.65604
[Memory limit in MB] => 128
[Memory usage in MB] => 18.237907409668
[Peak memory usage in MB] => 19.579357147217
[Average server load in last minute] => 0.47
[Maximum resident shared size in KB] => 44900
[Integral shared memory size] => 0
[Integral unshared data size] => 0
[Integral unshared stack size] => 
[Number of page reclaims] => 12102
[Number of page faults] => 6
[Number of block input operations] => 192
[Number of block output operations] => 
[Number of messages sent] => 0
[Number of messages received] => 0
[Number of signals received] => 0
[Number of voluntary context switches] => 606
[Number of involuntary context switches] => 99

)

1 голос
/ 19 декабря 2011

Я использовал этот класс для профилирования и мониторинга моих собственных служебных скриптов.Это отлично работает, если вы ничего не имеете против классов Pear.

Вы можете установить различные таймеры в коде и воздействовать на значения, возвращаемые этими таймерами.В качестве бонуса вы можете получить текстовое или html-профилирование о том, сколько времени потребуется для запуска каждого таймера.

Для получения дополнительной информации см. Документацию .

Надеждаэто помогает, удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...