2010-07-28 116 views
8

我在IIS7上安装了WCF服务。我注意到,对我的服务的第一个电话总是非常慢。接下来的电话可以接受的速度要快得多&。WCF性能第一次呼叫缓慢

如果在一段时间内没有对该服务进行调用,则会再次进入睡眠模式。在此之后,下一次通话需要很长的时间。

这个问题的任何补救措施?

回答

12

这是因为IIS上的进程管理。当一定时间内没有呼叫时,IIS会释放资源并停止流程。 这就是为什么你可以注意到,第一次请求和长时间延迟后请求缓慢。因为在第一次请求或长时间的沉默之后,IIS会从头开始加载所有内容。 JIT编译器运行等...

另请注意: 当您在IIS上托管WCF服务时,WCF服务将享受ASP.NET应用程序的所有功能。您必须了解这些功能,因为它们可能会导致服务领域出现意外的行为。其中一个主要特点是应用程序回收,包括应用程序域回收和过程回收。通过IIS管理控制台,您可以在想要进行回收时配置不同的规则。您可以根据内存,时间和处理的请求数量设置特定的阈值。当IIS回收工作进程,工作进程内的所有应用程序域将被回收利用,以及

如果您需要自动启动:Windows服务控制管理器允许您将启动类型设置为自动,这样的一旦Windows启动,服务就会启动,无需在机器上进行交互式登录。所以你可以使用Windows服务作为主机。

更多的细节可以在Hosting and Consuming WCF Services

+0

感谢关于答案和链接的隐身。 关于接受率,我还没有收到任何解决方案,我帮助我的前一个问题,结果在0%接受比率 – 2010-07-28 10:13:57

+0

@Sharjeel同意我真的注意到:)。 – Incognito 2010-07-28 10:21:25

3

还有一种方法可以让你更好。我们有一些类似的流程,通过非常轻松的“获取”请求来保持我们的服务器每5分钟一次,以保持所有服务器“热”(通过加载大部分所需的dll等),以便用户体验更好。

我同意这不是一个傻瓜证明的方式,但仍然可以考虑除了增加IIS中的回收设置。

+2

+1合理的事情。也可以通过诸如nagios之类的工具用于健康检查。 – 2012-07-10 13:34:22