2014-10-30 135 views
0

我们有一个托管在IIS上的WCF服务。该服务接收请求并基于其中一个请求参数,它自己提供请求或将其重定向到其他服务器。重定向的过程实质上是对另一个经典Web服务(asmx)的调用。WCF服务 - 呼叫重定向问题

我们一直面临的问题是,当我直接调用asmx服务时,我们得到的响应时间不到20毫秒,但是当通过WCF服务调用响应时,响应时间会缩短到300毫秒。我的推测是,请求在被分派到WCF服务的asm​​x服务之前正在某处(IIS)被阻止。我一直试图检查性能计数器,但是,看不到任何计数器,我可以从中得出任何结论。我也检查了IIS日志,这也不是很好的指示。

我试图ping托管服务器主机asmx服务托管wcf服务的服务器,它只需要几乎3ms获得响应回来。

有没有什么办法可以让我得出结论:通话中多余的时间在何处?

更新 - 我试着使用Fiddler,它将响应时间缩短到20 ms apprx。如果我删除提琴手,响应时间上升到200毫秒

从框架3.5调用时建立在Framework 2.0中的服务可能会响应速度慢吗?

更新2 我们已经缩小到代理的问题。如果我们拒绝fiddler中的代理选项,响应时间会增加。对WCF服务的调用是在basicHttpBinding上进行的,后者又调用asmx服务。它看起来像Fiddler缓存代理并在下次重新使用它。如果这种理解是正确的,那么在我们的设置中是否可以实现类似的东西?

+0

我将从诸如ANTS Profiler或Visual Studio等工具分析WCF服务开始。此外,这是发生在单个电话还是重负载? – 2014-10-30 08:47:54

+0

这也适用于单个呼叫。 – vibhu 2014-10-30 09:22:58

回答

0

事实证明,我们的服务期望将100Continue设置为false。我们使用Wireshark检查了网络传输,发现当请​​求结束时没有附加expect100Continue时,服务器托管asmx服务的响应延迟。 更多关于期望100继续这里 - expect100Continue

+0

我们的应用程序需要接近实时性能。在进一步讨论之后,我们决定将useNagelAlgorithm设置为false。保持expect100继续可能会导致负载平衡环境中的问题。 – vibhu 2014-11-06 03:24:37