本文翻译自 Máňa, Natalia 和 Anton 创作的 .NET 9 Networking Improvements 秉承我们的传统,我们很高兴与您分享这篇博客文章,以介绍新的 .NET 版本中网络领域相关的最新动态和最有趣的变化。今年,我们带来了 HTTP 领域的改变、新的 HttpClientFactory API、.NET Framework 兼容性优化等更多内容。 HTTP 在接下来的部分中,我们将介绍 HTTP 领域最具影响力的变化。其中包括连接池的性能优化、对多个HTTP/3连接的支持、Windows代理的自动更新,以及重要的社区贡献。 连接池 在此版本中,我们对HTTP连接池进行了两项显著的性能优化。 我们增加了对多个HTTP/3连接的可选支持。根据RFC 9114标准文档,由于连接可以多路复用并行请求,因此不鼓励使用多个HTTP/3连接到对等端。然而,在某些场景下,例如服务器到服务器的通信,即使请求多路复用,单一连接也可能成为瓶颈。我们在 HTTP/2 中看到了这样的限制(dotnet/runtime#35088),它同样具有在单一连接上多路复用的概念。出于同样的原因(dotnet/runtime#51775),我们决定为HTTP/3实现多连接支持(dotnet/runtime#101535)。 该实现本身尽可能贴近 HTTP/2 多连接机制的行为。当前,它的策略是优先填充已有连接,直到达到对端允许的请求上限后,才会创建新的连接。不过,需要注意的是,这是一个具体的实现细节,该行为在未来可能会有所变化。 结果是,我们的基准测试显示每秒请求数(RPS)有显著提升,以下是10,000个并行请求的对比结果: 客户端 单 HTTP/3 连接 多 HTTP/3 连接 最大CPU使用率(%) 35 92 最大核心使用率(%) 971 2572 最大工作集(MB) 3810 6491 最大私有内存(MB) 4415 7228 处理器数量 28 28 […]
