Как увеличить информацию в ASP.NET Trace - PullRequest
0 голосов
/ 15 октября 2008

Я сделал несколько улучшений производительности для моего приложения, и чтобы показать преимущество конечным пользователям графического интерфейса, мы использовали страницу Trace.axd для определения времени. (Внешний интерфейс - .Net 1.1, а внутренний - Java, подключенный через веб-службы.)

Однако эти временные рамки не показывают разницы между старым и новым бэкэндами.

Поместив точку останова в бэкэнд и удерживая там запрос в течение 30 секунд, я вижу из Trace.axd, что POST занимает 3 мс, а GET - 4 с. Я пропускаю около 26 с ...

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

Есть ли способ повысить степень детализации информации в трассировке, чтобы включить весь запрос? Или есть другой способ сделать необходимые мне измерения?

Ответы [ 3 ]

1 голос
/ 15 октября 2008

ОК, в конце концов, я получил то, что хотел. Проблема в том, что IIS Trace не включает время, необходимое для возврата POST.

Я обнаружил, что могу использовать Trace.Write () для добавления пользовательских записей в журнал трассировки и даже для добавления категории, используя Trace.Write (строковая категория, строковое сообщение).

Добавление вызова Trace.Write () в мой код, который выполняется после завершения POST, дает мне лучшую цифру.

Тем не менее, он не идеален, как обычно, и я должен поставить его как можно ближе к концу цикла POST.

0 голосов
/ 15 октября 2008

Это ненормально, что вывод трассировки не показывает все время, которое вы провели в Brakpoint. Вы проверили столбец общего времени, чтобы увидеть, соответствует ли он времени, которое вы провели в запросе? Не забывайте, что один из столбцов показывает только время, проведенное с момента предыдущего оператора трассировки.

Если вам нужны более детальные данные в выводе трассировки, вы можете добавить свои собственные. Класс TraceContext имеет два метода, Warn и Write, которые добавляют строки к выводу (warn добавляет его красным).

TraceContext доступен с каждой страницы или элемента управления: просто используйте this.Trace.Warn () или this.Trace.Write () (и я думаю, что он также доступен через класс HttpContext).

0 голосов
/ 15 октября 2008

Я не уверен, как вы делаете запросы на стороне .NET, но я предполагаю, что где-то есть HttpWebRequest Я ожидаю, что HttpWebRequest.GetResponse () вернется, как только получит заголовки ответа. Таким образом, вы можете начать обработку начала большого ответа, пока остальная часть еще загружается. Если ваши сообщения трассировки находятся непосредственно перед и после вызова GetResponse, вы, следовательно, не увидите всего времени выполнения серверной части. Можете ли вы добавить сообщение трассировки сразу после закрытия ответа?

...