Где IIS тратит время на ответ .net webapi? - PullRequest
0 голосов
/ 10 июня 2018

Контекст: WebApiController вызывает бизнес-объект (эти бизнес-объекты создают и запускают несколько потоков для обработки данных от разных провайдеров), а после присоединения к ним webapi форматируют некоторые поля или добавляют другие: это каркас наших типичных контроллеров webapi:

xxxxController: WebApiController
{
   StopWatch timer.Start()
   .
   .
   businessLogic //1.create cache of some tables (around 5000 rows, 5/10Mb.) 
                 //2.create and run threads (10 aprox)
                 //2.1 every thread call external services via APIs
                 //3.wait the join of all threads.
   .
   .
   timer.Stop()
   log(timer.elapsedMilisecond)
}

Здесь все отлично.Ответ контроллера правильный, данные верны, и все в порядке, НО, когда мы начинаем измерять время для повышения производительности, мы выяснили, что время, которое мы измерили внутри контроллера, намного меньше, чем измеренное времяв клиенте я объясняю это:

AVG, измеренные в контроллере, составляют 30 секунд.но прошедшее время, измеренное в клиенте (браузере), составляет около 10-15 секунд.подробнее:

  • Это не связано со временем загрузки (размер ответа avg составляет около 500 КБ)

  • Мы думаем, что это не из-за проблем с сериализацией (наша первая неудачная ставка) (чтобы гарантировать это, мы принудительно выделили несколько пустых ответов с 3 / 6kb, и истекшее время в клиенте на 10/15 секунд больше, чем время контроллера).Пример:

Время клиента и время WebApiController для реального и пустого ответа

  • Другие контроллеры следуют тому же каркасу (но с меньшимтребования к кешу и параллельные потоки), и мы не замечаем существенного различия между apiController elapsedTime и клиентским elapsedTime (возможно, несколько миллисекунд или 1 секунда)

Итак, мой вопрос: где находится IIS(или .NET) потребляющее это время ??

  • возможно, коллекционер Garbagge ??(для нас 10 / 15сек - много времени для GC, но, может быть, это могло быть так?).

  • возможно Сжатие ответов ???(500 КБ - очень маленький размер, чтобы тратить так много времени, не так ли?)

  • какая-то задача в IIS, которую я не знаю?Любая помощь?

Я проанализировал конвейер RQ Webapi, и искренне, не знаю, где мы тратим это драгоценное время.(https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf)

Кто-то знает, как измерить время, когда различные действия, которые происходят в .NET Framework или в IIS после возврата контроллера?

заранее спасибо!

РЕДАКТИРОВАТЬ:

детализация времени на стороне клиента (Chrome-Dev-Tool)

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