我需要向不同的服务器并行发送大约 200 个 HTTP 请求并获得响应。
我在 C# 中使用 HttpWebRequest 类。
但是当并行处理请求时,我没有看到很好的时间增强。
例如,如果一个请求需要 3 秒才能得到响应,2 个并行请求 - 6 秒,3 个请求 - 8 秒,4 个请求 - 11 秒......
这不好,我希望应该有最好的时间,200 个请求大约 10 秒。
看起来只有 2-3 个请求并行执行,但超时在 WebRequest 对象创建后立即开始。
我尝试设置 DefaultConnectionLimit
和 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和 HttpWebRequest.BeginGetRequestStream .
关于c# - C# 中的多个 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2972988/