WCF在VM中的localhost上运行时超时

时间:2012-07-01 21:39:00

标签: c# wcf virtualbox performance

我遇到了在本地运行WCF服务的问题。当我在本地运行服务时,从客户端打开频道开始大约需要60秒,直到我看到正在调用WCF服务的方法。如果我连接到我们的暂存环境中运行的服务,它可以正常工作,并且没有减速。

  • 我在运行Windows Server 2008的新盒子上运行客户端和服务,在VirtualBox托管的VM中。
  • 已在VM上禁用IPV6
  • 我的主机文件中有一个指向localhost的引用
  • 详细记录客户端和主机上的日志,仅显示为客户端上的超时生成的异常。登录服务在从请求开始到结束的很长时间内都没有显示错误。
  • 我关闭了Windows防火墙,没有任何效果。
  • 客户端和服务的所有配置文件都与暂存计算机匹配。

我工作的其他开发人员都没有这个问题。我也没有在运行windows7(不在VM中)的单独框中出现此问题。我们的临时服务器也都是VM(Server 2008),尽管它们运行在不同的VM平台上。

1 个答案:

答案 0 :(得分:0)

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

如果您开始看到这不是第一次调用该服务,但仅在前10个左右之后,可能是会话泄漏。这意味着,一个是为每个调用创建一个新的服务客户端,然后忘记关闭它。在服务器上耗尽ServiceThrottlingBehavior.MaxConcurrentSessions后,每个后续会话必须等到前一个会话超时,然后才能快速成功。通过将CloseTimeout从其默认值60秒减少来进行测试,并查看是否是控制所见内容的超时。然后,当然,找到会话泄漏并关闭它以获得真正的修复。

如果两者都不是,您可以配置service tracing并使用其输出来更详细地提出问题。