找回密码
立即注册
搜索
发回帖 发新帖

4909

积分

0

好友

625

主题
发表于 1 小时前 | 查看: 3| 回复: 0

天下苦“手动排空 Body”久矣。

过去,Go 的 http.Client 为了追求纯粹:如果你不把数据读到 EOF,连接池就拒绝复用该连接。不少线上事故,都只是因为少写了一行 io.Copy(io.Discard, ...)。

Go 1.27 的重磅救赎

Go 官方博客 宣布,从 Go 1.27 起,net/http 客户端在执行 resp.Body.Close() 时,会自动、静默地帮你排空未读取的残留数据(在合理的保守阈值内)。

这意味着连接会安全回到空闲连接池(Idle Pool)中。旧代码无需任何改动,就能大幅削减连接重建带来的延迟开销。

官方仍留下的“避坑警示”

连接虽然能自动复用了,但别忘了 http.DefaultTransport 的 MaxIdleConnsPerHost 默认值依然是极度保守的 2。在高并发调用外部微服务时,一定要手动调整连接池大小,否则连接依然会被无情关掉。

十年磨一剑,Go 标准库正在把那些曾经靠“口口相传经验”的暗坑,一一变成安全默认值。

云栈社区 里,不少 Go 开发者也在复盘:因为漏排空 resp.Body 导致连接池失效的暗坑,你踩中过几次?




上一篇:神经渲染半年提速10倍,英伟达DLSS 5新模型改变了什么
下一篇:DIY装机“大力出奇迹”有多坑?盘点九大毁硬件翻车现场
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-18 03:06 , Processed in 0.062892 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表