实体框架 – 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-mvc-3 – 如何拦截MVC应用程序中的所有控制器调用?
- asp.net-web-api2 – 在控制器操作中获取JSON Web Token有效
- 如何阻止IIS 8停止空闲的ASP.NET应用程序?
- asp.net – ASP .Net WorldPay集成
- 如何在Substitution控件中使用ASP.Net服务器控件?
- asp.net – IIS7中的SQL Server和Windows身份验证
- asp.net-mvc-4 – 在MVC中的App_Start()文件夹中使用AuthCo
- asp.net – 如何使用Response.OutputStream.Write将文件发送
- asp.net-core – 如何从控制器中解析ASP NET 5中的EF7当前数
- 登录的用户无效.Memership服务. asp.net
- asp.net – Visual studio 2013:无法看到下拉开
- asp.net-mvc-3 – “字段宽度必须是数字.”在客户
- asp.net-mvc-4 – 检查组是否为空SignalR?
- .NET Core多平台开发体验[4]: Docker
- asp.net-mvc – 关于asp.net MVC视图模型模式的几
- asp.net-mvc – ASP.NET MVC – 仅经过身份验证的
- asp.net – 如何摆脱丑陋的asp:菜单闪烁?
- asp.net – 在使用ASPNet Core的Linux上托管时的
- asp.net-mvc – ASP.NET MVC用户友好401错误
- 在asp.net生成的代码中没有“使用”引用