我已经制作了一个控制台应用程序,主要对我的服务器执行大量请求。每个用户10-15000个请求。
因此,我编写了这段代码,使用了.NET的HTTP Client库:
public async Task<string> DoRequest(string token)
{
var request = new HttpRequestMessage(HttpMethod.Post, "mysite.com");
string requestXML = "my xml request goes her...";
request.Content = new StringContent(requestXML, Encoding.UTF8, "text/xml");
var response = await httpClient.SendAsync(request);
return await response.Content.ReadAsStringAsync();
}
现在我正在尝试每秒执行尽可能多的HTTP请求...我不知道这个上限是什么,所以我使用了并行for循环来加速这个过程:
Parallel.For(0,list.Count(),items=>{
DoRequest(item.Token);
});
但是我对代码的速度和请求的方式并不满意...
有没有什么方法可以加速,使每秒完成10-100个请求?最大限制是多少?
有人能帮帮我吗?
附言:伙计们,我只创建了一个httpclient类的实例,因为我读到说这是一个好习惯,只要每次创建这个类的新对象就会关闭连接,这不是我们想要的,对吧?
HttpClient
在任一时刻对同一服务器的连接数是受限制的(尽管你可以通过ServicePointManager.DefaultConnectionLimit
来更改这个限制)。 - DavidG