限制WCF服务资源的使用

时间:2010-08-16 14:28:51

标签: wcf windows-services

我正在开发一个需要执行耗费大量CPU和内存的任务的Web应用程序,这也可能持续几分钟。为了获得更好的用户体验,我还开发了一个Windows服务,该服务承载执行此“高成本”任务的WCF服务,并使用msmq(消息队列)与Web应用程序通信。

这很有效,直到我尝试进行负载测试... Windows服务开始消耗大量资源,让CPU工作在100%和超过1GB的内存。我已经寻找优化,我已经对代码做了很多调整,我认为它非常有效,但是这项任务只需要很多资源。

问题是,当WCF服务正常工作时,CPU的使用率为100%,Web应用程序变得不可思议!我不介意WCF服务的任务是否需要几分钟,但我希望Web应用程序能够为用户提供良好的性能。

所以我想知道是否有办法限制WCF服务可以使用的资源,优先考虑Web应用程序。

提前致谢。

2 个答案:

答案 0 :(得分:0)

简单的解决方案是将WCF服务放在不同的计算机上。

服务使用大量CPU的事实可能与您使用WCF无关。

您可以通过某些方式改善网络应用的效果:

  • 一次只处理一条消息。
  • 将工作分成更小的部分。
  • 在任务管理器中将Windows服务的优先级设置为低于正常值
  • 在服务器上安装更多RAM

答案 1 :(得分:0)

我想这是您的Windows服务设计的问题。当您决定在Windows服务中托管WCF时,您必须控制资源利用率=您必须控制限制。您必须创建对内部服务处理的可配置控制,以便您可以根据可用资源更改负载。如果您在IIS中托管WCF,它已在AppPool级别提供此类控件。

有一些免费工具可以限制给定流程的CPU使用率,但这不是我建议用于生产用途的。

最好的问候,拉迪斯拉夫