偶尔的WCF 5秒响应峰值

时间:2011-12-15 12:19:24

标签: c# wcf

我们正在开发一个客户端 - 服务器系统,客户端连接到服务并从缓冲区中获取图像。该请求通过NetTcpBinding以25赫兹(每秒25个请求)运行。发送的图像数据包含图像缓冲区(byte [])和一些关于图像的元数据。

我们遇到的是,偶尔服务器不会响应5秒(5020到5050毫秒),我们无法弄清楚原因。

在客户端上运行svc日志记录,我们看到以下内容

Activity Boundary                   Suspend       10:00:00:000
Activity Boundary                   Resume        10:00:00:003
Received a message over a channel   Information   10:00:05:017

在将服务器作为托管WCF服务运行时,以及非托管WWS服务

时,会出现

每隔100,000次请求可能会发生一次,每晚一次,或每分钟几次,看似随机。

有谁知道可能导致此问题的原因?

1 个答案:

答案 0 :(得分:3)

我们发现该解决方案已隐藏在Microsoft客户支持数据库中。

  

5秒的延迟是由于SWS的发射(愚蠢的窗口   综合症)避免计时器。 SWS计时器计划发送   剩余数据小于1 MSS(最大段大小,1460   字节)和接收器应该发送一个广告的ACK   增加接收窗口并指示剩余的数据字节   可以发送。但是,如果接收器发送ACK,则可以   在5秒内准备好充足的缓冲,SWS计时器不能   由于竞争条件,恢复5秒延迟状态。

http://support.microsoft.com/kb/2020447

仅在使用localhost或127.0.0.1时才会出现此问题。在不同的计算机上运行服务和客户端时不会发生延迟。