2010-05-27 104 views
0

我正在通過實體框架4.0數據模型開發WCF數據服務,但我們無法在當前環境下轉至生產環境。WCF數據服務:調用SaveChanges()會導致100%CPU

我的客戶端應用程序正在添加和修改大量對象,大約100,000個。然後它調用該服務的SaveChanges方法以在單個操作中保留所有更改。 WCF數據服務託管在NServiceBus主機進程中,但我不知道這是否有助於解決該問題。

這可行,但在1-CPU,4GB RAM,Win2008 x64虛擬機上需要一個多小時。更重要的是,CPU利用率達到100%。內存消耗在75%和85%之間波動。這是在開發環境虛擬機中,因此服務覆蓋的SQL Server 2005數據庫是本地的。在此過程中,WCF數據服務的主機進程吞吐量大約爲1.2 GB。

任何想法??提前謝謝了!

+0

內存消耗可佔容易。但是你有沒有看過哪種服務會讓CPU時間如此糟糕? – Kangkan 2010-05-27 10:49:55

+0

我以爲這是WCF數據服務的主機進程佔用了時間,但並非如此...... WCF數據服務實際上託管在IIS中,它是託管在NServiceBus主機進程中的客戶端。 因此,客戶幾乎佔用了所有的時間(再次,波動 - CPU時間的85%到98%之間)。 – Roy 2010-05-27 11:04:57

+0

配置您的應用程序。這是任何性能問題的第一步。 – 2010-05-27 12:53:54

回答

0

您是否確實需要修改一個事務中的所有對象?如果不是,那麼我會建議儘可能短地保持數據上下文的開放。

  • 打開數據上下文
  • 更新對象
  • 節省變化
  • 靠近數據上下文