用 net/http 并发请求时须自定义 http.Client设 Timeout如10s、MaxIdleConns 与 MaxIdleConnsPerHost建议≥2000、调整 IdleConnTimeout并发控制用 sync.WaitGroup channel避免默认配置导致客户端瓶颈。用 net/http 发起并发请求别碰 http.DefaultClient 默认超时Go 自带的 http.Client 能扛住高并发但默认配置会拖垮压测结果http.DefaultClient 的 Timeout 是 0无限等待而底层 Transport 的 MaxIdleConns 和 MaxIdleConnsPerHost 默认只有 100一压就卡在连接池排队。实际压测必须显式构造 client设置 Timeout 控制单次请求上限比如 10 * time.Second调大 Transport.MaxIdleConns 和 Transport.MaxIdleConnsPerHost建议至少设为 2000关闭 Transport.IdleConnTimeout 或设为较大值避免连接被过早回收不改这些你看到的 QPS 上不去不是服务端瓶颈是客户端自己堵死了。控制并发数用 sync.WaitGroup channel别用 for 循环直接起 goroutine写个 for i : 0; i 看似简单实则危险瞬间拉起上万个 goroutine内存暴涨、调度开销大还可能触发系统级限制如文件描述符耗尽。正确做法是用固定 worker 池控流用 make(chan struct{}, N) 做信号通道N 即最大并发数如 200每个请求前 sem 结束后 code-sem配合 sync.WaitGroup 等待全部完成别依赖 time.Sleep漏掉 channel 泄露或 wg.Add/Wait 不配对会导致程序提前退出或永远 hang 住。立即学习“go语言免费学习笔记深入” Vozo Vozo是一款强大的AI视频编辑工具可以帮助用户轻松重写、配音和编辑视频。