c# - 使用 Entity Framework 和 WCF 的大型应用程序

标签 c# wcf visual-studio-2010 entity-framework .net-4.0

我们正在开发一个大型 ASP.NET 应用程序。该应用程序使用以下内容:

  • 作为数据访问层的 Entity Framework 。
  • WCF 作为通信层,使用 ChannelFactory 来创建 channel (每次调用都有一个新 channel ),WCF 服务托管在 Windows 服务中并使用 WSHttpBinding。
  • SQL Server 2008 R2

  • 有时,我们在业务层使用 TransactionScope 来创建交易。

  • 数据库包含大量数据,通过 WCF 传递。
  • 我们所有的 Entity Framework ObjectContext 都使用 statemnt 包裹在里面以确保它们被释放。
  • 每个 WCF channel 在使用后被释放。
  • 我们有在后台运行的长期事务,其中包含许多还通过 WCF 进行的频繁数据库访问。

主要有两个关键问题:

  • 我们有某种内存泄漏。 WCF 服务主机的内存不断增加,尤其是对于大数据。
  • SQL Server 的内存也越来越大。

这些问题使得应用程序非常缓慢,有时甚至没有响应,这迫使我们重新启动wcf和sql服务。

该应用程序托管在具有 4 GB RAM 的 Windows Server 2008 环境中。

最佳答案

希望这能让你开始:

  1. 检查 WCF diagnostics ,如果有任何异常或意外行为。
  2. 然后使用一些内存profiling tools查看哪些对象保留在 WCF 主机内存中。
  3. 验证与 MS SQL 的连接已关闭并按请求方式正确处理
  4. 检查您是否在进行任何数据缓存,并确认没有留下任何旧数据。
  5. Profile微软 SQL。

关于c# - 使用 Entity Framework 和 WCF 的大型应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370418/

相关文章:

c# - 将继承自 ScriptableObject 的脚本添加到游戏对象

WCF 数据服务错误 "The given name ' Foo' 未在实体集中找到”

c# - Datagridview 行改变颜色

c# - 未将凭据传递给 WCF 服务导致 401

visual-studio-2010 - Asp.net 4.0尚未注册

c++ - 在 visual studio 中构建示例 opencv 应用程序时出错

c# - 本地连接但不通过网络连接的客户端服务器(服务)应用程序

c# - VSTestHost 正在崩溃并且不再工作

c# - EntityFramework 在转换为基类型时抛出绑定(bind)异常

托管在 Windows 服务中的 c# wcf 在 5 分钟后空闲