当存在多个保持活动请求时,HttpWebRequest停止

时间:2010-06-24 20:32:36

标签: c# httpwebrequest

我正在尝试为我写过的Web服务服务器编写一个负载测试客户端。客户端使用HTTP与服务器交互。

我的服务的常规客户端应该使用HTTP keep alive(通过使用HTTP 1.1并且不在HttpWebRequest中将KeepAlive值设置为false),以便它们的TCP连接可以保留以用于以后的HTTP请求。每个客户端在开始时进行同步请求/响应以进行身份​​验证,然后转到异步请求。

在我的负载测试中,我希望有数百个模拟客户端都向同一服务器发送请求。但是,如果我在HttpWebRequests中没有将KeepAlive设置为false,那么所有模拟客户端显然都会尝试使用SAME TCP连接,并且我在负载测试中遇到停顿,因为他们慢慢尝试共享连接以进行初始同步要求。我不相信让第一个请求异步将解决这个问题,我之前尝试过并在BeginGetResponse()调用中获得相同的停顿(它应该立即返回但不会),因为它正在等待进入我认为共享连接。

是否有某种方法可以确保我的负载测试中的每个“客户端”都获得自己的TCP连接,这些连接会在未来的HttpWebRequests中重用?

有人在这里有类似的问题: HttpWebRequest timeout in 3.5sp1他们使用KeepAlive = false解决了这个问题,但这对我来说还不够好,因为这个服务器的容量会很大,我希望将网络数据传输保持在最低限度。

1 个答案:

答案 0 :(得分:0)

连接限制可能因底层操作系统/托管环境而异。可以通过将HttpWebRequest.ServicePoint.ConnectionLimit设置为更高的值,或者在.NET的.config文件之一中以编程方式进行更改