我最近将现有的ASP.NET MVC 2应用程序转换为带有WebAPI后端的MVC 4。不幸的是,我一直在注意到WebAPI方面的一些严重的性能问题。WebAPI性能不佳
我有MiniProfiler设置,并添加了一些步骤,看看我能否确定瓶颈,令我惊讶的是,它不是数据库。在转换之前,这样的请求不会超过〜50ms,所以看到这些简单的请求需要2秒钟以上,这有点令人震惊。
奇怪的是,所有这一切都是该请求,甚至使得它的SQL调用本身之前大部分的延迟出现。
我想知道是否有一种已知的方式将MiniProfiler更深入地结合到WebAPI的调用中,以进一步检查这里实际发生的事情。任何援助将不胜感激。
FWIW,这里是正在使用此请求
的WebAPI控制器代码:
[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();
我希望这可以帮助别人!
您是否尝试过使用VS配置文件来弄清楚需要花费那么多时间? –
Web应用程序中是否有任何静态页面/图像来测试加载时间?它可能与网络/服务器相关。 –
@YoussefMoussaoui感谢您的回应!实际上,我剖析了剖析器,但没有发现任何特别有趣的事情,为什么我的请求花了这么长时间......最长的部分是路由请求,但即使那样也相对较短。也许我正在使用错误的分析器?如果有帮助,我使用VS2012。 –