我正在开发一个需要执行耗费大量CPU和内存的任务的Web应用程序,这也可能持续几分钟。为了获得更好的用户体验,我还开发了一个Windows服务,该服务承载执行此“高成本”任务的WCF服务,并使用msmq(消息队列)与Web应用程序通信。
这很有效,直到我尝试进行负载测试... Windows服务开始消耗大量资源,让CPU工作在100%和超过1GB的内存。我已经寻找优化,我已经对代码做了很多调整,我认为它非常有效,但是这项任务只需要很多资源。
问题是,当WCF服务正常工作时,CPU的使用率为100%,Web应用程序变得不可思议!我不介意WCF服务的任务是否需要几分钟,但我希望Web应用程序能够为用户提供良好的性能。
所以我想知道是否有办法限制WCF服务可以使用的资源,优先考虑Web应用程序。
提前致谢。
涓
答案 0 :(得分:0)
简单的解决方案是将WCF服务放在不同的计算机上。
服务使用大量CPU的事实可能与您使用WCF无关。
您可以通过某些方式改善网络应用的效果:
答案 1 :(得分:0)
我想这是您的Windows服务设计的问题。当您决定在Windows服务中托管WCF时,您必须控制资源利用率=您必须控制限制。您必须创建对内部服务处理的可配置控制,以便您可以根据可用资源更改负载。如果您在IIS中托管WCF,它已在AppPool级别提供此类控件。
有一些免费工具可以限制给定流程的CPU使用率,但这不是我建议用于生产用途的。
最好的问候,拉迪斯拉夫