Если страница обрабатывается на пару секунд, я бы хотел, чтобы Apache где-то регистрировал этот URL. Это возможно? У меня много сайтов, поэтому я искал автоматический способ сделать это, а не проприетарный код для каждого сайта.
Есть ли способ медленного запроса журнала Apache?
Ответ 1
Взгляните на http://httpd.apache.org/docs/2.2/mod/mod_log_config.html. Вы можете настроить собственный журнал, который включает время, затраченное на выполнение запроса.
Например:
LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time
Добавлено время в микросекундах, которое потребовалось для обслуживания запроса в качестве последнего поля вашего файла журнала.
Вы добавили бы эту строку в свой httpd.conf, затем в каждом виртуальном хосте, где вы хотите его использовать, добавьте эту строку:
CustomLog logs/access_log_time common-time
Вы также можете создать новый LogFormat, который содержит только то, что вы хотите, возможно, так:
LogFormat "\"%r\" %D" measure-time
В вашем виртуальном хосте вы можете иметь несколько журналов, поэтому у вас может быть:
CustomLog logs/access_log common
CustomLog logs/access_log_time measure-time
Все, что сказал, там огромное оговорку. Это будет измерять только время, необходимое серверу для обслуживания страницы. Он не будет включать время, необходимое для выполнения любого javascript в браузере. Если вам нужно измерить время выполнения javascript, вам нужно будет использовать инструмент, например firebug.
Как только у вас есть журнал, вы можете использовать что-то вроде apachelog для анализа файла журнала, чтобы получить только те запросы, которые заняли больше времени чем любой порог, который вы хотите использовать.
Я не уверен, что можно регистрировать только длинные запросы и байты на этапе синтаксического анализа. Это может быть, но у меня есть ощущение, что потребуется значительная работа.