2012-07-01 159 views
0

我在本地运行WCF服务时遇到问题。当我在本地运行服务时,从客户端打开该通道的时间起,大约需要60多秒,直到我看到WCF服务的方法被调用。如果我连接到运行在我们临时环境中的服务,它可以正常工作,并且没有减速。WCF在虚拟机本地主机上运行时超时

  • 我在VirtualBox托管的虚拟机内部运行Windows Server 2008的新盒子上运行客户端和服务。
  • IPV6对VM
  • 被禁用我有我的主机文件的引用,对客户端和主机localhost上
  • 详细日志记录指向,只显示在客户端上超时而产生的异常。登录该服务只需要很长时间就显示没有错误,从请求开始到结束。
  • 我关闭了windows防火墙,没有任何效果。
  • 客户端和服务的所有配置文件都与登台计算机相匹配。

没有其他开发人员在我工作的地方有这个问题。我也没有在运行windows7的单独的盒子上有这个问题(不在虚拟机中)。我们的登台服务器也都是虚拟机(Server 2008),尽管它们运行在不同的VM平台上。

+0

如果您不通过WCF运行服务方法需要多长时间?即在客户端的参数中创建一个单元测试和馈送,但完全运行在进程中。 – Chris

+0

@Chris如果我连接调试器并从头到尾运行该方法,则需要的时间很少,不到一秒钟。它只需要很长时间形成客户端到服务,并从服务到客户端 –

+0

明白了,只是几个问题。平时需要多长时间?这只是这个具体的电话吗?做后续的电话需要更少的时间? – Chris

回答

0

如果您发送非常小的请求并等待每个响应,这看起来像Nagle's algorithm击中你。暂时测试disabling it

如果你开始看到这不是第一次调用服务,但只有在前10次左右后,才可能是会话泄漏。这意味着,每个呼叫都会创建一个新的服务客户端,然后忘记关闭它。在服务器上耗尽ServiceThrottlingBehavior.MaxConcurrentSessions之后,每个后续会话都必须等到先前的一次超时,然后才能成功。通过将CloseTimeout从其缺省值60秒减少并查看这是否是支配您所看到的超时。然后,当然,找到会话泄漏并关闭一个真正的修复。

如果您的情况都不是这样,您可以配置service tracing并使用其输出来更详细地增强该问题。

+0

这只是一个需要这么长时间的单个请求。很少有流量正在发送 –

+0

@AaronM - 编辑答案给你两个更多的东西尝试。 –

+0

我打开了跟踪。没有看到任何错误消息,也没有任何迹象表明跟踪可疑。当我有机会时,我会提交一个跟踪。 –

相关问题