dotTrace показывает много неучтенного времени в PipelineRuntime.ProcessRequestNotification

Я использую dotTrace для профилирования веб-приложения WCF .Net, написанного на C# и работающего на сервере IIS. Одна запись показывает 7,77 секунд, потраченных в PipelineRuntime.ProcessRequestNotification со следующими дочерними процессами

  • 0,03 секунды в MyMethod
    • 0,016 секунд в HttpRequest.GetHeaders
  • 0,2 секунды в [небезопасной прогулке по стеку]

Это оставляет более 7 секунд совершенно неучтенными. У кого-нибудь есть ощущение того, куда может уйти это недостающее время? Возможно ли, что что-то в MyMethod съедает это время, но dotTrace просто не сообщает об этом должным образом?

1 ответ

В этом случае неучтенным временем является собственное время PipelineRuntime.ProcessRequestNotification. Это означает, что код этой конкретной функции и всех встроенных JIT- функций занимал ~7 секунд.

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

Другие вопросы по тегам