我们有一个asp.net core 2服务器。 在性能测试中,当我们有几个(比如数十个)待处理请求时,新的CORS预检请求保持待定状态。
似乎asp.net核心对管道中的并发请求数有一定的限制,并且该限制的默认值非常低。
是否有关于这些与性能相关的主题的资源? 有没有办法确定请求的优先顺序?
当然,在我们优化其他请求之后,这个问题将难以重现,所以我们想要了解它。
答案 0 :(得分:2)
我已经回答了与{1}}的ASP.NET Core Kestrel基准性能相关的similar question。
简而言之,您可以删除导致瓶颈的中间件,或者至少这可以帮助您诊断罪魁祸首。
<强>排序强>
在Configure
方法中添加中间件组件的顺序定义了它们在请求上调用的顺序,以及响应的相反顺序。 此排序对于安全性,性能和功能至关重要。------来源:here
您可以通过不调用next
参数来短路请求管道以处理性能优化(或测试)。例如:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
// make sure you place this at the top
// the request pipeline will go in sequence
app.Use(async (context, next) =>
{
// do work for your special case, performance tests, etc
// in order to short-circuit the pipeline, do NOT call the next parameter
// so, you could place some kind of conditional here that will allow only
// specific requests to continue down/up the pipeline
if (!true)
{
await next.Invoke();
}
});
// the rest of the pipeline
}
}