Как я могу войти время генерации страницы asp.net - PullRequest
2 голосов
/ 25 октября 2011

Я получаю жалобы от пользователей на то, что веб-приложение ASP.NET, за которое я отвечаю, периодически работает медленно. Как записать данные о времени генерации страницы, чтобы я мог определить, так ли это, и если да, то какие страницы медленные и в какое время суток. Я не хочу, чтобы эта информация отображалась для пользователя, я просто хочу регистрировать ее где-то для каждого запроса страницы, а затем я буду просматривать журналы ежедневно или еженедельно и импортировать их в базу данных или в Excel для манипуляции .

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

Дополнительные баллы за то, что это то, что не требует изменения кода, поскольку это производственная система, и я хотел бы иметь возможность использовать любые счетчики производительности и существующие функциональные возможности журнала, которые предоставляются «из коробки», вместо того, чтобы использовать мой собственный если возможно.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Журналы IIS , Легче всего начать, также требуя наименьших изменений.Убедитесь, что в диспетчере IIS установлен флажок «Время занято».Расположение журналов по умолчанию будет где-то здесьПоле времени в миллисекундах будет добавлено в строку запроса.Вы можете импортировать его в Excel или использовать такие инструменты, как IIS Log Analyzer.

Trace.axd в web.config, убедитесь, что трассировка включена.

<system.web>
<trace enabled="true" localOnly="false" requestLimit="50" />
</system.web>

перейдите к приложению, сделайте что-нибудь там.затем перейдите к http://yourhost/yourApp/Trace.axd,, он будет отображать время начала каждого события страницы.Некоторая информация может быть собрана оттуда.Но это не так много.

0 голосов
/ 25 октября 2011

вы можете использовать httpModule с событиями: Вы должны сделать dll и через webconfig зарегистрировать его в разделе httpmodule. Теперь вы должны поместить секундомер в ProcessRequest и PostREquestHandlerExecute. и тогда у вас будет общее время. также вы можете использовать трассировку, но она является внутренней по отношению к самой странице .... и пропустить некоторые события инициализации ...

ProcessRequest
..
..
..
page things...
..
..
..
PostREquestHandlerExecute
...