Skip to content

性能优化

预设配置对比

指标DefaultSecurePerformanceMinimal
Request 超时180s15s60s180s
MaxIdleConns502010010
MaxConnsPerHost105202
MaxRetries3130
MaxResponseBodySize10MB5MB50MB1MB
HTTP/2开启开启开启开启
Cookies关闭关闭开启关闭
SSRF 防护开启开启开启开启
FollowRedirects开启关闭开启关闭

场景选型

场景推荐预设调整建议
通用 Web 服务Default-
处理用户提供的 URLSecure-
内部微服务高并发Performance调大 MaxIdleConns
一次性脚本Minimal-
文件下载服务Performance增大 MaxResponseBodySize
金融/医疗 APISecure + 自定义增加审计中间件
go
// 高吞吐场景
client, _ := httpc.New(httpc.PerformanceConfig())

// 在预设基础上微调
cfg := httpc.PerformanceConfig()
cfg.Timeouts.Request = 120 * time.Second
cfg.Connection.MaxIdleConns = 200
client, _ := httpc.New(cfg)

对象池复用

HTTPC 内部对引擎响应对象与字符串构建器复用 sync.Pool,减少 GC 压力;Result 则每次请求新建、由 GC 自动回收:

go
result, err := client.Get(url)
if err != nil {
    return err
}
// Result 每次请求新建,GC 自动回收,无需手动释放

TIP

高并发场景中,对象池复用可显著减少 GC 压力。

性能反模式

反模式原因正确做法
每个请求创建客户端连接无法复用全局复用客户端
过大 MaxResponseBodySize内存占用合理设置限制
热路径中用 result.String()字符串构建开销直接用 Body()

下一步