Есть ли способ, чтобы Apache регистрировал медленные запросы? - PullRequest
11 голосов
/ 07 октября 2010

Если на обработку страницы уходит более пары секунд, я бы хотел, чтобы Apache где-то зарегистрировал этот URL. Это возможно? У меня много сайтов, поэтому я искал автоматический способ сделать это, а не собственный код для каждого сайта.

1 Ответ

21 голосов
/ 09 октября 2010

Взгляните на 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 для анализа файла журнала, чтобы получить только те запросы, которые заняли больше времени, чем любой порог, который вы хотите использовать.

Я не уверен, что возможно регистрировать только длинные запросы и пропустить шаг разбора.Возможно, но я чувствую, что это потребует значительного количества работы.

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