无需等待即可发送常数的http请求

时间:2017-06-13 00:58:56

标签: c# multithreading

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

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 个答案:

答案 0 :(得分:0)

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

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

如果它必须在C#中...那么抱歉并且没关系