WCF 数据服务:调用 SaveChanges() 导致 100% CPU
我正在基于 Entity Framework 4.0 数据模型开发 WCF 数据服务,但在当前情况下我们无法进入生产阶段。
我的客户端应用程序正在添加和修改大量对象,大约 100,000 个。然后,它调用服务的 SaveChanges 方法以在单个操作中保存所有更改。 WCF 数据服务托管在 NServiceBus 主机进程中,尽管我不知道这是否会导致该问题。
这可行,但在 1-CPU、4GB RAM、Win2008 x64 虚拟机上需要一个多小时。更重要的是,CPU 利用率高达 100%。 RAM 消耗在 75% 到 85% 之间波动。这是在开发环境虚拟机中,因此该服务覆盖的 SQL Server 2005 数据库是本地的。在此过程中,WCF 数据服务的主机进程消耗了大约 1.2 GB 的空间。
有什么想法吗?非常感谢!
I am developing a WCF Data Service over an Entity Framework 4.0 data model, but there's no way we can go to Production under the current circumstances.
My client application is adding and modifying a lot of objects, around 100,000. Then it calls the service's SaveChanges method to persist all changes in a single action. The WCF Data Service is hosted in an NServiceBus host process, although I don't know if that contributes to the issue.
This works, but it takes more than an hour on a 1-CPU, 4GB RAM, Win2008 x64 virtual machine. More importantly, CPU utilization goes up to 100%. RAM consumption fluctuates between 75% and 85%. This is in a development environment virtual machine, so the SQL Server 2005 database the service is covering is local. The WCF Data Service's host process eats up around 1.2 GB during this process.
Any ideas?? Many thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您真的需要修改一笔事务中的所有对象吗?如果不是,那么我建议尽快保持数据上下文开放。
Do you really need to modify all objects within one transaction? If no, then I would propose to hold the data context open as shortly as possible.