2010-08-16 97 views
0

我正在開發一個Web應用程序,需要執行消耗大量CPU和內存的任務,而且這可能會持續幾分鐘。爲了獲得更好的用戶體驗,我還開發了一個Windows服務,它承載執行此「高成本」任務的WCF服務,並使用msmq(消息隊列)與Web應用程序進行通信。限制WCF服務資源的使用

這很好,直到我試圖做一個負載測試... Windows服務開始消耗大量的資源,推遲CPU工作在100%和超過1GB的內存。我尋找優化,並且對代碼做了很多調整,我認爲它非常高效,但是這項任務只需要大量資源。

問題是,雖然WCF服務正在工作,CPU得到100%使用和Web應用程序變得不可思議的慢!我不介意WCF服務的任務需要花費幾分鐘的時間,但我希望Web應用程序能夠很好地滿足用戶的需求。

所以我想知道是否有一種方法來限制WCF服務可以使用的資源,並給予Web應用程序優先級。

在此先感謝。

胡安

回答

0

最簡單的解決辦法是把WCF服務在不同的機器上。

服務使用很多CPU的事實可能與您使用WCF無關。

有一些方法,你也許能改善你的web應用程序的性能:

  • 只處理一次一個消息。
  • 將作業分成較小的部分。
  • Windows服務至低於正常在任務管理器
  • 的設置優先級安裝更多的RAM服務器
0

上我想這是你的Windows服務設計的問題。當你決定在Windows服務中託管WCF時,你必須控制資源利用率=你必須控制節流。您必須創建內部服務處理的可配置控制,以便您可以根據可用資源更改負載。如果你在IIS中託管WCF,它已經在AppPool級別上提供了這種控制。

有一些免費軟件工具允許限制給定進程的CPU使用率,但這不是我推薦的生產用途。

此致敬禮拉迪斯拉夫