Что такое System.Web.Mvc.MvcHandler.ProcessAsyncRequest ()? - PullRequest
8 голосов
/ 29 ноября 2011

Я выполняю некоторую трассировку в NewRelic и вижу, что почти каждый запрос содержит вызов 'System.Web.Mvc.MvcHandler.ProcessAsyncRequest ()'.

Этот вызов функции может занятьот 300 мс до 100 с (серьезно, 100 с).Я пытался найти документацию по MSDN, но ничего на http://msdn.microsoft.com/en-us/library/system.web.mvc.mvchandler.aspx

явно нет, мне что-то здесь врут.

У меня есть несколько теорий относительно того, почему это занимает так много времени:

  • вывод типа?Я использую Structuremap.

  • проблемы с ресурсами сервера?

  • .net несовместимость какой-либо версии?

  • asp.net mvc какая-то несовместимость?

Среда:

.net 4

asp.net mvc 3

выделенный VM

Ответы [ 3 ]

4 голосов
/ 04 мая 2012

Когда я обнаружил эту проблему, я подумал так же, как @garfbradaz, и посмотрел источник MVC.Это было интересно, поскольку я обнаружил без ссылки на метод ProcessAsyncRequest.

Следовательно, я решил, что это может быть что-то, что New Relic вводит, или, как вы говорите, красная сельдь ичто-то нам врет!Я выключил New Relic и связался с их командой поддержки.

Сегодня, после нескольких писем от чрезвычайно отзывчивого и вежливого члена команды New Relic, они ответили мне и подтвердили, что это ошибка(сортов).Вот их ответ:

ProcessAsyncRequest - это пользовательское имя, которое мы используем для любой записываемой метрики, которая не является / не наследуется от "System.Web.UI.Page."Учитывая, что механизм представления MVC использует «System.Web.Mvc.ViewPage», все эти метрики будут ошибочно попадать в моникер New Relic «ProcessAsyncRequest».

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

Я сообщу вам обновленную информацию по мере приближения к решению.

ПРАВКА : Дальнейший ответ от New Relic ниже - похоже, что у них есть исправление.

Я только что выдвинул коммит, который поможет нам лучше классифицировать транзакции, поступающие от установленного агента.

Что касается проблемы с производительностью, мы обнаружили проблему, о которой сообщили замечательные инженеры AppHarbor, которая вызывала исключения TypeLoadException, которые могут быть связаны с медленной загрузкой / компиляцией кода, помещаемого в кэш.Мы нашли причину и находимся на последних этапах тестирования этого исправления, и мы надеемся получить исправление в следующем выпуске агента.

Ник из New Relic отлично отреагировал на это.и их продукт был действительно полезен, так что у меня нет плохих чувств, я просто поделился подробностями здесь.

Очень рад узнать, что в моем приложении MVC нет призраков!

А пока я советую всем, у кого есть эти проблемы, отключать New Relic до следующего выпуска.

EDIT 2 : Ник из New Relic отправил мне электронное письмо сегодня - их последний агент(версия 2.0.9.15) - теперь доступна и должна исправить эту проблему.

2 голосов
/ 07 апреля 2012

Вы пытались загрузить исходный код MVC, код MVC3 можно найти здесь:

http://aspnet.codeplex.com/releases/view/58781

Поработайте и отладьте свой сайт, чтобы увидеть, что происходит, - и любезно сообщайте! :)

1 голос
/ 30 ноября 2011

Вы пытались установить Glimpse через Nuget и смотреть запрос?

Hanselman опубликовал в блоге об этом

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