Entity framework WCF数据服务:调用SaveChanges()会导致100%的CPU占用

Entity framework WCF数据服务:调用SaveChanges()会导致100%的CPU占用,entity-framework,nservicebus,wcf-data-services,Entity Framework,Nservicebus,Wcf Data Services,我正在实体框架4.0数据模型上开发一个WCF数据服务,但在当前情况下,我们无法投入生产 我的客户端应用程序正在添加和修改很多对象,大约100000个。然后调用服务的SaveChanges方法,将所有更改持久化到单个操作中。WCF数据服务托管在一个NServiceBus主机进程中,尽管我不知道这是否导致了这个问题 这是可行的,但在一台单CPU、4GB RAM、Win2008 x64虚拟机上需要一个多小时。更重要的是,CPU利用率高达100%。RAM消耗在75%和85%之间波动。这是在一个开发环境虚

我正在实体框架4.0数据模型上开发一个WCF数据服务,但在当前情况下,我们无法投入生产

我的客户端应用程序正在添加和修改很多对象,大约100000个。然后调用服务的SaveChanges方法,将所有更改持久化到单个操作中。WCF数据服务托管在一个NServiceBus主机进程中,尽管我不知道这是否导致了这个问题

这是可行的,但在一台单CPU、4GB RAM、Win2008 x64虚拟机上需要一个多小时。更重要的是,CPU利用率高达100%。RAM消耗在75%和85%之间波动。这是在一个开发环境虚拟机中,因此该服务覆盖的SQL Server 2005数据库是本地的。在此过程中,WCF数据服务的主机进程占用了大约1.2 GB的空间


有什么想法吗??非常感谢

您真的需要修改一个事务中的所有对象吗?如果没有,那么我建议尽快打开数据上下文

开放数据上下文 更新对象 保存更改 关闭数据上下文
可以很容易地解释内存消耗。但是你看过哪个服务如此严重地占用CPU时间吗?我以为占用时间的是WCF数据服务的主机进程,但不是。。。WCF数据服务实际上托管在IIS中,它是托管在NServiceBus主机进程中的客户端。因此,客户机又占用了几乎所有的时间,在CPU时间的85%到98%之间波动。这是解决任何性能问题的第一步。