2017-06-13 34 views
0

嗨,大家好我想用一个简单的控制台应用程序发送请求到服务而不需要等待。目标是每秒发送100个请求,而无需等待响应。我的想法是一次创建并运行10个线程,每个线程将创建一个http客户端并发送请求。线程创建后等待100毫秒,然后再创建10个线程。代码如下:发送恒定数量的http请求,无需等待

while (true) 
{ 
    try 
    { 
      for (int i = 0; i < 10; i++) 
      { 
       Task.Factory.StartNew(SendRequest); 
      } 
    } 
    catch (Exception) 
    { 
      // ignored 
    } 

    Thread.Sleep(100); 
} 

每个sendRequest将方法将打印HTTP状态代码的结果控制台后得到http请求的结果。但我发现这个应用程序将成功打印前20个结果,这意味着线程已完成并销毁。但在此之后,它将不再打印任何东西,但内存在增加,这意味着线程一直在创建但是正在旋转。所以,你能帮助回答:

1)为什么线程在20个请求完成后挂起,是因为http客户端的连接限制?

2)如何不用等待代码每秒发送常量请求?

+1

难道这些请求到一个单一的网址是什么?单个主机?多个主机? – spender

+0

尝试catch是无用的,因为异常存储在任务本身 – VMAtm

回答

0

可能是脱离主题,但如果您不需要在C#中执行此操作,则可以使用apache基准测试来执行此操作并进行测试。您可以控制并发性,时间和请求数量。

ab -c 10 -t 60 -n 6000 http://www.website.com/ 

如果它是在C#..然后难过,请不要介意