为什么默认情况下,ASP.NET Core的ServicePointManager.DefaultConnectionLimit仅设置为10?

时间:2020-08-25 15:27:46

标签: performance asp.net-core

乍一看,在编写ASP.NET Core 3.1应用程序时,可能会认为只要您能够处理所有传入请求,就会将大量传出请求与其他API并发(例如,进行大量的传出API调用。)

我对此很疑惑,因为当我阅读有关实际进行了多少次调用的文档时,偶然发现ServicePointManager及其属性DefaultConnectionLimit。根据{{​​3}},默认值似乎是10:

ServicePoint允许的最大并发连接数 目的。对于ASP.NET托管,默认连接限制为10 申请和2个其他申请。

例如ServicePointManager使用此HttpClient,因此即使您每秒处理1k传入请求,通过HttpClient发出的请求的数量也绝不会超过10。给定时间。这就是我不了解的-如何扩展得好?我天真的想法是,.NET Core本身并没有限制传出请求的数量,如果您的API通过取消请求耗尽了其他API,这将由您来决定,但是显然,这绝不会发生。框,因为默认情况下ServicePointManager禁止这样做。

我已经看到docs在启动时“建议”调用ServicePointManager.DefaultConnectionLimit = int.MaxValue

但是为什么首先将其设置为10这样的低值?并将其设置为int.MaxValue是否合理?

0 个答案:

没有答案