2017-10-08 63 views
2

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

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/" 
    } 
    } 
} 

我使用网址。 enter image description here

+0

4的CPU是一台MacBook Pro的 – user1591668

+0

是什么'maxConcurrentThreadsPerCPU'和'maxConcurrentRequestsPerCPU'设置为https://stackoverflow.com/questions/44391268/how-to-configure-concurrency-in-net-core-web-api?将ThreadPool.SetMinThreads设置为很大数量(比如说2000)有帮助吗?你在运行什么操作系统(Windows 10 Home?其他?)? – mjwills

+0

我不认为这些选项存在.net核心2.0 – user1591668

回答

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!"); 
    }); 
} 
+0

完美,这绝对有助于很多 – user1591668