builder.WebHost.ConfigureKestrel() 无法正常工作

问题描述 投票:0回答:1

我们有 ASP.NET Core 6.0 Web api 项目。我想配置 kestrel 限制,导致大传输时连接超时或业务逻辑中等待。

有我的 Program.cs 配置。但它不起作用。连接将在一分钟后关闭。

我们使用 alphine linux 在 kubernetes 中运行这个后端。 nginx 没有设置。我认为它集成在 .net core 包 idk 中。

builder.WebHost.ConfigureKestrel(options =>
    {
        options.Limits.MaxConcurrentConnections = 5000;
        options.Limits.MaxConcurrentUpgradedConnections = 5000;
        options.Limits.MaxRequestBodySize = int.MaxValue;
        options.Limits.MaxRequestBufferSize = int.MaxValue;
        options.Limits.KeepAliveTimeout = TimeSpan.FromHours(10);
        options.Limits.RequestHeadersTimeout = TimeSpan.FromHours(10);
    });

有一些UI日志可供测试:

413 -> 请求正文大小仅为 5MB 顺便说一句。

503 -> 1 分钟后连接超时。

感谢您的回答。

asp.net .net configuration core kestrel
1个回答
0
投票

我明白了。

您应该将此行添加到注释下的 kubernetes.yml Ingress 部分。

apiVersion: ***
kind: Ingress
metadata:
 annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    nginx.ingress.kubernetes.io/proxy-connect-timeout: '1200'
    nginx.ingress.kubernetes.io/proxy-read-timeout: '1200'
    nginx.ingress.kubernetes.io/proxy-send-timeout: '1200'

这会增加在 kubernetes 中运行的 api 的请求/响应主体的大小以及连接超时。我设置了50MB和20分钟,你可以随意编辑。

© www.soinside.com 2019 - 2024. All rights reserved.