限制WCF服务资源的使用

限制WCF服务资源的使用,wcf,windows-services,Wcf,Windows Services,我正在开发一个web应用程序,它需要执行一项消耗大量CPU和内存的任务,而且可能会持续几分钟。为了获得更好的用户体验,我还开发了一个windows服务,该服务承载一个WCF服务,该服务执行此高成本任务,并使用msmq消息队列与web应用程序通信 这非常有效,直到我尝试进行负载测试。。。windows服务开始消耗大量资源,使CPU以100%的速度工作,内存超过1GB。我一直在寻找优化,我对代码做了很多调整,我认为这是非常有效的,但这项任务只需要大量的资源 问题是,当WCF服务工作时,CPU的使用率

我正在开发一个web应用程序,它需要执行一项消耗大量CPU和内存的任务,而且可能会持续几分钟。为了获得更好的用户体验,我还开发了一个windows服务,该服务承载一个WCF服务,该服务执行此高成本任务,并使用msmq消息队列与web应用程序通信

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

问题是,当WCF服务工作时,CPU的使用率达到100%,web应用程序的速度变得异常缓慢!我不介意WCF服务完成的任务是否需要几分钟,但我希望web应用程序能够为用户提供良好的性能

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

提前谢谢


Juan

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

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

有一些方法可以提高web应用程序的性能:

一次只处理一条消息。 把工作分成更小的部分。 在任务管理器中将windows服务的优先级设置为低于正常值 在服务器上安装更多RAM
我想这是Windows服务设计的一个问题。当您决定在Windows服务中承载WCF时,您必须控制资源利用率=您必须控制节流。您必须创建对内部服务处理的可配置控制,以便可以根据可用资源更改负载。如果您在IIS中托管WCF,它已经在AppPool级别提供了此类控制

有一些免费软件工具允许限制给定进程的CPU使用,但这不是我推荐用于生产的工具

向你问好,拉迪斯拉夫