禁用Kestrel(dotnet asp.net核心服务器)请求队列

如果一次遇到太多请求,Kestrel(dotnet asp.net核心服务器)将对请求进行排队。我希望它抛出503而不是队列,以避免超时。我们有

.UseKestrel(options => { options.Limits.MaxConcurrentConnections = 100; })

但是,如果有100个以上的请求,它仍然会排队,有些请求会超时。

Foxronger 回答:禁用Kestrel(dotnet asp.net核心服务器)请求队列

MaxConcurrentConnections属性指定Kester服务器在开始拒绝连接之前可以接受的连接数。

因此,换句话说,MaxConcurrentConnections指定队列长度。在上面的示例中,如果它接受了100个请求并进行处理,它将开始删除。

https://github.com/aspnet/AspNetCore/blob/b31bdd43738a55e10bb38336406ee0db56c66b44/src/Servers/Kestrel/Core/src/Middleware/ConnectionLimitMiddleware.cs#L32-L39

如果您的网站每秒接收的请求少于10个,并且您正在处理5秒内的请求,那么您会很好。

此外,没有选项可以指定自定义HTTP错误代码。服务器将终止TCP连接。您的客户端应检测并处理网络错误。

也请参阅以下未解决的问题:https://github.com/aspnet/AspNetCore/issues/4777

本文链接:https://www.f2er.com/3113107.html

大家都在问