ASP.Net Core HTTP请求连接被卡住

时间:2019-02-04 20:47:56

标签: asp.net asp.net-core

我们在ASP.NET Core中有一个简单的应用程序,它可以调用网站并返回内容。 Controller方法如下:

[HttpGet("test/get")]
public ActionResult<string> TestGet()
{
    var client = new WebClient
    {
        BaseAddress = "http://v-dev-a"
    };
    return client.DownloadString("/");
}

我们称为URL的只是IIS的默认页面。我正在使用Apache JMeter在10秒内测试1000个请求。我总是遇到同样的问题,大约300-400次请求后,它卡住了几分钟,却无济于事。包含控制器的应用程序已完全冻结。 在性能监视器(MMC)中,我看到连接已达到100%。

我在ASP.NET 4.7.2中尝试了相同的代码,并且运行时没有任何问题。

我还了解到WebClient的处置不起作用,应该将其设置为静态。参见here 另外,停用KeepAlive也无济于事:

public class QPWebClient : WebClient
{
   protected override WebRequest GetWebRequest(Uri address)
   {
      var request = base.GetWebRequest(address);
      if (request is HttpWebRequest)
      {
         ((HttpWebRequest)request).KeepAlive = false;
      }
      return request;
   }
}

HttpClient有相同的问题,它没有任何改变

使用推荐的here这样的依赖项注入会引发异常,Web客户端无法同时处理更多请求。

另一种失败的尝试是在ServicePoint中更改ConnectionLimit和SetTcpKeepAlive

所以我不知道如何解决此问题。最后的想法是将应用程序移动到ASP.NET。你们中有人有想法或面临过同样的问题吗?

0 个答案:

没有答案