实体框架 – ASP.NET Web Api 2/EF6首次调用初始化性能
|
第一次调用我们的API总是非常慢。例如,下面的示例演示了CPU使用情况和第一个调用完成所需的时间: 第一次调用可能需要长达30秒,并吃几乎100%的CPU。呼叫2和3需要200ms(因为他们应该)。在回收应用程序池之后,它将对第一次调用执行相同的操作。 我读了一点关于IIS“热身”,并做以下,但没有改变: IIS 8 Application Initialization安装: 我在IIS中有以下设置: >将启动模式设置为AlwaysRunning: >将“回收超时”设置为0: >将空闲超时设置为0: >在站点上将预加载启用设置为true: 我实际上是在RoleEntryPoint.OnStart()中的代码中设置这些。 using (var serverManager = new ServerManager())
{
serverManager.ApplicationPoolDefaults.ProcessModel.IdleTimeout = TimeSpan.Zero;
foreach (var application in serverManager.Sites.SelectMany(x => x.Applications))
{
application["preloadEnabled"] = true;
}
foreach (var applicationPool in serverManager.ApplicationPools)
{
applicationPool.AutoStart = true;
applicationPool["startMode"] = "AlwaysRunning";
applicationPool.ProcessModel.IdleTimeout = TimeSpan.Zero;
applicationPool.Recycling.PeriodicRestart.Time = TimeSpan.Zero;
}
serverManager.CommitChanges();
}
我几乎可以肯定实体框架可能是罪魁祸首: >我们在EDMX模型“设计器”中从大约100个表生成模型。 using (var context = new MyContext())
{
context.Database.Initialize(false);
}
我在调试时没有这些“初始化”问题。 使用以下技术: > .NET 4.5.1 任何人都可以向我提供任何其他想法或建议吗? 解决方法不确定是否有人解决了这个问题,但我了解到在Entity Framework的初始启动时出现的一些性能问题。 Julie Lerman在她的关于Entity Framework的Pluralsight课程中讨论了这个问题,并在下面的摘录自微软的文章中提到:
这里似乎她不只是谈论“初始负载”,而是上下文的实际第一次使用。我想快速搜索Julie Lerman和Entity Framework性能问题。我注意到类似的慢度,当对我的Web API的初始调用。第一次之后的每个调用都明显更快。我个人没有发现它太可怕,所以我忽略它(现在)。然而,我发现它很有趣,它不会发生在调试模式。对不起,如果你已经探索了这些选项,但我希望这有一点帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在asp.net web api中不会触发Application_Error
- asp.net-mvc – LINQ to Entities无法识别方法异常
- asp.net – 在VS 2008嵌套母版页中包含对JavaScript的相对引
- asp.net-mvc – 在ASP.NET MVC应用程序中更改日期格式
- asp.net-mvc – VS2013不编译ASP.NET MVC5视图
- asp.net-mvc – EntityFramework代码在部署到Azure后未运行
- asp.net-mvc-4 – 为什么ResolveBundleUrl不能用于自定义文
- 在ASP.NET MVC 2中实现DropDownList的最佳方式?
- asp.net Gridview,1记录跨度两行
- asp.net – Panel visible = true没有任何效果
- asp.net-mvc – 如何填充/验证您的ViewModels?
- msbuild – 如何为ASP.NET 5项目设置TeamCity构建
- asp.net – 如何从SQL Server 2008本身获取客户端
- asp.net-mvc – MVC DB首先修复显示名称
- asp.net-mvc – ASP.Net MVC 3中的远程验证:如何
- ASP.NET MVC与ASP.NET 4.0
- asp.net – DropDownList烦恼:相同的值不会触发
- asp.net – 比HttpHandlers快的东西?
- asp.net-mvc-2 – 检查Html.ValidationSummary()
- 休息 – OData与GraphQL GraphQL比较OData有什么
