我需要向不同的服务器并行发送大约 200 个 HTTP 请求并获得响应。
我在 C# 中使用 HttpWebRequest 类。
但是,当并行处理请求时,我没有看到很好的时间改进。
例如,如果一个请求需要 3 秒才能获得响应,则并行 2 个请求 - 6 秒,3 个请求 - 8 秒,4 个请求 - 11 秒...
不太好,希望有一个最好的时间,200个请求10秒左右。
看起来只有 2-3 个请求并行执行,但超时在 WebRequest 对象创建后立即开始。
我尝试设置DefaultConnectionLimit
and MaxServicePoints
值,但 id 没有帮助。据我了解,这些参数表示对一个站点的并行请求数量。我需要向不同站点发出请求。
我用来测试的代码示例:
ArrayList a = new ArrayList(150);
for (i = 50; i < 250; i++ )
{
a.Add("http://207.242.7." + i.ToString() + "/");
}
for (i = 0; i < a.Count; i++)
{
Thread t = new Thread(new ParameterizedThreadStart(performRequest));
t.Start(a[i]);
}
static void performRequest(object ip)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create((stirng)ip);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
}
有人遇到过这样的问题吗?
感谢您的任何建议。
不要启动自己的线程,而是尝试使用 HttpWebRequest 的异步方法,例如HttpWebRequest.BeginGetResponse http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse(v=VS.100).aspx and HttpWebRequest.BeginGetRequestStream http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetrequeststream(v=VS.100).aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)