【问题标题】:asp.net core how can I stop http request from lockingasp.net核心如何阻止http请求锁定
【发布时间】:2017-10-08 05:03:04
【问题描述】:

我是 asp.net Core 的新手,到目前为止我很喜欢它。我有一个非常简单的操作,它只返回一个字符串 "Hello World" 。我的问题是,我认为 http 请求被锁定,这实际上减慢了速度,就像 ASP.NET application to serve multiple requests from a single process 一样。我正在做负载测试,我的第一个请求是 967 毫秒,但是我的第 100 个请求需要 10927 毫秒或 10 秒,这对于返回一个简单的字符串来说非常长。这是在发布模式下完成的。

  public string HomeStream()
    {

        return "Hello World";
    }

我认为有些东西正在锁定 http 请求,因为第 100 个请求应该更快返回。任何建议都会很棒。这是我的启动设置

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:55556/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "MyApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:5002/"
    }
  }
}

我正在使用 5002 网址。

【问题讨论】:

  • 4 cpu's it's a MacBook Pro
  • maxConcurrentThreadsPerCPUmaxConcurrentRequestsPerCPU 设置为 stackoverflow.com/questions/44391268/… 是什么?将ThreadPool.SetMinThreads 设置为一个很大的数字(比如 2000)有帮助吗?您在什么操作系统上运行(Windows 10 Home?其他?)?
  • 我认为 .net core 2.0 不存在这些选项

标签: c# asp.net-core asp.net-core-2.0


【解决方案1】:

如果您所做的只是尝试返回一个简单的字符串并对底层主机进行负载测试,那么我建议您删除所有中间件和服务

using System.Net;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;

public static void Main(string[] args)
{
    IWebHost host = new WebHostBuilder()
        .UseKestrel()
        .Configure(app =>
        {
            // notice how we don't have app.UseMvc()?
            app.Map("/hello", SayHello);  // <-- ex: "http://localhost/hello"
        })
        .Build();

    host.Run();
}

private static void SayHello(IApplicationBuilder app)
{
    app.Run(async context =>
    {
        // implement your own response
        await context.Response.WriteAsync("Hello World!");
    });
}

【讨论】:

  • 完美,绝对有很大帮助
猜你喜欢
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-06-08
  • 2021-01-05
  • 1970-01-01
相关资源
最近更新 更多