Как я могу войти asp.net время генерации страницы

#asp.net #performance #logging

#asp.net #Производительность #ведение журнала

Вопрос:

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

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

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

Ответ №1:

Журналы IIS, с которых проще всего начать, также требуют наименьших изменений. Убедитесь, что в диспетчере IIS стоит галочка «Затраченное время». Расположение журналов по умолчанию будет где-то здесь %SystemDrive%inetpub logs LogFiles, (вам нужно будет определить экземпляр вашего веб-сервера). Поле Затраченное время в миллисекундах будет добавлено к строке журнала запросов. Вы можете импортировать его в Excel или использовать такие инструменты, как IIS Log analyzer.

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

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

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

Ответ №2:

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

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