Как получить статистику времени загрузки страницы php?

В последнее время у нас возникли проблемы с настройкой LAMP, и мы начали замечать, что количество подключений к базе данных MySQL время от времени увеличивается. Мы подозреваем, что некоторые операции mysql занимают больше времени, чем обычно, и apache только что начал создавать резерв соединений для обработки входящих запросов.

Вопрос в том, есть ли способ постраничной статистики по таким вещам, как среднее время загрузки? среднее время загрузки? максимальное/минимальное время загрузки для каждой php-страницы (page1.php, page2.php, page3.php и т. д.). Так что мы можем сузить, где проблема. Есть ли такая вещь в составе apache? Может отдельный модуль?


person erotsppa    schedule 17.10.2010    source источник


Ответы (2)


Из формата журнала вы можете просто регистрировать затраченное время ( %D) в журналах доступа, а после инцидента отсортировать по затраченному времени и проверить URL-адреса. Я не знаю ни одного приложения, которое проверяет это из коробки, но многие приложения могут обрабатывать журналы доступа apache, поэтому есть вероятность, что есть те, кто может с этим работать. Я редко просматриваю журналы для конкретных страниц, только общие данные по серверу, поэтому я не могу вам помочь.

Если MySQL занят/причина:

  1. Закройте соединение с MySQL, если вы закончили с ним, чтобы соединение было освобождено раньше.
  2. Увеличьте максимально допустимое количество подключений, если они вам действительно нужны.
  3. Если у вас все еще есть зависшие процессы, проверьте вывод SHOW FULL PROCESSLIST, чтобы узнать, какие запросы выполняются.
  4. Вы можете включить slow_query_log, регистрируя все запросы свыше определенного количества миллисекунд (в более новых версиях старые версии поддерживали только секунды) или не используя индексы. Инструмент командной строки mysqldumpslow может точно группировать/подсчитывать запросы.
person Wrikken    schedule 17.10.2010
comment
Стоит отметить, что, хотя я считаю, что это метрика, на которую должен смотреть OP, %D измеряет время для одного URL-адреса, а не страницы, и (IIRC) измеряет время, прошедшее между получением запроса и выгрузкой ответ - это не то же самое, что время, затраченное на создание ответа. - person symcbean; 21.10.2010
comment
Если бы вопрос был «как я могу получить точную статистику», вы были бы совершенно правы. Однако вопрос только в том, как мне отследить долго работающие процессы, для которых это вполне подходит. - person Wrikken; 21.10.2010
comment
Для меня %T был лучшим регистратором времени. - person ethicalhack3r; 17.12.2012

Если у вас есть доступ к php.ini, вы можете использовать Xdebug: http://xdebug.org/

person Loïc Février    schedule 17.10.2010