performance - 为什么默认情况下 ASP.NET Core 的 ServicePointManager.DefaultConnectionLimit 设置为 10?
问题描述
乍一看,在编写 ASP.NET Core 3.1 应用程序时,可能会认为只要你能处理所有传入请求,就会同时向其他 API 等发出一堆传出请求(假设你的 API 做了很多当然是传出 API 调用)。
我想知道这一点,因为当我阅读有关实际进行了多少次调用的文档时,我偶然发现了 ServicePointManager 和它的 property DefaultConnectionLimit
。根据文档,默认值似乎是 10 :
ServicePoint 对象允许的最大并发连接数。ASP.NET 托管应用程序的默认连接限制为 10,所有其他应用程序的默认连接限制为 2。
例如,这ServicePointManager
是使用的HttpClient
,因此即使您每秒处理 1k 个传入请求,HttpClient
在任何给定时间通过的传出请求数都不会超过 10 个。这就是我不明白的 - 这怎么可能很好地扩展?我的想法很天真,当然,.NET Core 本身并没有限制传出请求的数量,如果你的 API 通过 nuking 请求耗尽了其他 API,这将取决于你,但显然这永远不会发生在框,因为ServicePointManager
默认情况下禁止这样做。
我已经看到“建议”在启动时调用的示例。ServicePointManager.DefaultConnectionLimit = int.MaxValue
但是为什么一开始就设置为 10 这么低的值呢?将其设置为 是否合理int.MaxValue
?
解决方案
推荐阅读
- sql - BigQuery 谷歌分析自动化问题
- reactjs - 当我打印 PokemonData 时,它是未定义的
- android-studio - 如何使用云存储(Android Studio)存储谷歌地图标记?
- android - Android中的DB打开失败错误,可能是由于DB文件位置
- javascript - 在 Electron 应用程序中刷新 div 的内容
- jquery - 单击功能在第一次单击时不起作用
- html - div之间垂直线的CSS
- c# - 如何将 x:Name 添加到通过 xmlreader 创建的控件
- ios - 使用 XCode 11.4 在模拟器中测试远程通知说不支持
- python - 熊猫多索引数据框中一列的平均值