我希望使用.net HttpWebRequest运行大约10,000个并发请求,而不是所有请求都发往同一台主机,其中一些请求会通过一个代理池。
我目前使用的是线程,它在1000个并发的情况下工作得很好,但是我的CPU负载却是100%。如何修复它?
public string HttpGet(string url)
{
try {
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout = 20000;
request.CookieContainer = Cookie;
request.AutomaticDecompression = DecompressionMethods.GZip;
request.KeepAlive = true;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string tmp = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return tmp;
} catch (Exception ex) {
return "";
}
}我每次都发送请求,所以在1分钟内发出1000个请求。
发布于 2019-10-06 17:28:48
using块而不是Close调用来正确处理资源。https://stackoverflow.com/questions/58249236
复制相似问题