Недавно я преобразовал наше существующее приложение ASP.NET MVC 2 в MVC 4 с серверной частью WebAPI. К сожалению, я заметил некоторые серьезные проблемы с производительностью в отношении WebAPI.
Я установил MiniProfiler и добавил несколько шагов, чтобы увидеть, смогу ли я определить узкое место, и, к моему удивлению, это не база данных. До преобразования такой запрос занимал бы не более ~50 мс, поэтому то, что эти простые запросы занимают более 2 секунд, немного шокирует.
Странная часть заключается в том, что все это заключается в том, что большая часть задержки возникает еще до того, как запрос дойдет до самих вызовов SQL.
Мне было интересно, есть ли известный способ более глубоко связать MiniProfiler с вызовами WebAPI для дальнейшего изучения того, что здесь происходит на самом деле. Будем очень благодарны любой помощи.
FWIW, вот код, используемый для этого запроса
Контроллер веб-API:
[HttpGet]
public bool AssetExistsById(string assetId) {
using (Current.Profiler.Step("WebAPI Call To Model")) {
return Asset.AssetExists(assetId);
}
}
Модель актива:
public static bool AssetExists(string assetId) {
using (Current.Profiler.Step("WCF call to DataAccess lib")) {
return WcfEndPoint.AssetExists(assetId);
}
}
Спасибо!
Обновить
Итак, я узнал, что здесь происходит ... Оказывается, у меня была включена трассировка диагностики системы в моем файле App_Start/WebApiConfig.cs
. Я случайным образом закомментировал следующую строку, и все было исправлено.
config.EnableSystemDiagnosticsTracing();
Надеюсь, это поможет другим!