C# 使用实体框架和WCF的大型应用程序
我们正在开发一个大型ASP.NET应用程序。该应用程序使用以下选项:C# 使用实体框架和WCF的大型应用程序,c#,wcf,visual-studio-2010,entity-framework,.net-4.0,C#,Wcf,Visual Studio 2010,Entity Framework,.net 4.0,我们正在开发一个大型ASP.NET应用程序。该应用程序使用以下选项: 实体框架作为数据访问层 WCF作为一个通信层,使用ChannelFactory创建通道(每个调用都有一个新通道),WCF服务托管在windows服务中,并使用WSHttpBinding SQL Server 2008 R2 有时,我们在业务层中使用TransactionScope来创建事务 数据库包含大量通过WCF传递的数据 我们所有的实体框架ObjectContext都使用statemnt包装在里面,以确保它们被释放 每个
- 实体框架作为数据访问层
- WCF作为一个通信层,使用ChannelFactory创建通道(每个调用都有一个新通道),WCF服务托管在windows服务中,并使用WSHttpBinding
- SQL Server 2008 R2
- 有时,我们在业务层中使用TransactionScope来创建事务
- 数据库包含大量通过WCF传递的数据
- 我们所有的实体框架ObjectContext都使用statemnt包装在里面,以确保它们被释放
- 每个WCF信道在使用后被处理
- 我们有在后台运行的长时间事务,其中包含许多也通过WCF频繁访问的数据库。
- 我们有某种内存泄漏。WCF服务主机的内存不断增加,尤其是对于大数据
- SQL server的内存也在不断增加
该应用程序托管在具有4 GB RAM的windows server 2008环境中。希望这能让您开始:
有多少用户以及您正在处理的内存量,您有任何profiler统计数据吗?我们有4 GB RAM,用户数量约为6,7。SQL Server—单独留在一台机器上—将始终获取所需/所能获得的内存。这是正常的、预期的行为-没有理由担心(这就是为什么SQL Server最好有自己的、专用的服务器机器)我尝试过这个场景,但仍然有同样的问题。我有过类似的经历。。你有没有跟踪这些步骤?根据我们的经验,这与EF所做的“修正”有关。。除了删除上下文并重新创建它之外,我从未找到解决方案。