【发布时间】:2010-09-01 07:06:09
【问题描述】:
我正在尝试使用创建许多 HttpWebRequest (1000+) 的 C# 负载测试客户端对 Comet-ish 服务器进行负载测试。我发现几分钟后,服务器随机接收一些请求需要很长时间。客户端认为它发送请求成功,但实际上需要 40s 才能到达服务器,此时为时已晚。 (因为这是一个 Comet 类型的服务器,服务器最终会丢弃客户端会话,这很糟糕)。我尝试从异步调用切换到同步调用,但没有任何区别。
问题一定出在客户端。我使用 Wireshark 进行了一些跟踪,结果发现该请求实际上需要 40 秒左右才能从客户端软件到达网络管道!当服务器在其管道上收到请求时,它会立即为该请求提供服务。
也许 C# 搞砸了,因为请求看起来与我之前发出的请求完全相同,并且出于某种奇怪的原因对其进行了缓存?我在回复中包含“Cache-Control:no-cache”以避免完全缓存。
【问题讨论】:
-
失败请求的响应正文会写入什么内容?
-
好点,我会检查...
-
原来请求确实到达了,只是需要很长时间才能到达服务器,此时我的服务器写了一个响应,表明会话不再存在(正如预期的那样这些情况)。我更新了问题。
-
我尝试将 AllowWriteStreamBuffering 设置为 false,但没有帮助。如:blogs.msdn.com/b/delay/archive/2009/09/08/…
标签: c# httpwebrequest