跳到主内容
快讯直播
AI智模界
AI 词典

连接复用(HTTP Keep-Alive):省下的握手,往往堵在连接池里

一句话定义:连接复用是指客户端和服务器在同一条 TCP 连接上连续发送多个 HTTP 请求和响应,而不是每个请求都重新建立连接。HTTP/1.1 默认开启该行为,早期靠请求头 Connection: keep-alive 显式声明。

为什么值得省:建立一条 TCP 连接需要三次握手,至少一个网络往返;如果使用 HTTPS,还要再进行 TLS 握手,又要多几个往返。跨地域访问时,一次建立连接就可能花掉几十甚至上百毫秒,而一个普通 API 请求本身也许只要几毫秒。打个比方:你打客服电话咨询,每问一个问题就挂断重拨,等待接通的时间比说话还长;连接复用就是“先别挂,我接着问”。

和相邻概念的区别:

概念省的是什么关键差异
连接复用 Keep-Alive反复建立连接的开销一条连接排队处理多个请求,同一时刻只处理一个
连接池 Connection Pool连接创建和销毁的开销一批连接备着给多个请求轮流借用,池中连接靠复用维持
多路复用 Multiplexing(HTTP/2)同一条连接上的排队等待多个请求真正并发跑在一条连接上,互不阻塞
WebSocket不省握手,是换协议目的是双向持续推送,不是为了少握手

真正的坑在服务端:复用意味着连接会“挂着不释放”。空闲连接要占用内存和文件描述符,因此服务端必须设置空闲超时(keepalive timeout)和最大连接数。更隐蔽的问题是:中间的负载均衡、NAT 网关也可能悄悄回收空闲连接,而客户端还拿着已失效的连接发送请求,于是出现偶发的 502 或连接重置。经验法则是:客户端的空闲超时应该短于服务端,让客户端主动更换连接。

AI 场景下尤其容易出问题:大模型 API 网关。流式输出(SSE)的一次请求可能持续几十秒,整条连接在这期间被独占。并发一上来,后端连接池被打满,新请求只能排队等一条空闲连接,表现为 P99 延迟飙升、超时率上升。更糟的是,客户端早已断开,后端可能还在继续生成,连接迟迟不释放,形成雪崩。因此网关通常要做几件事:限制并发并按上游容量排队;给不同上游配置独立的池上限;下游断开时及时取消上游请求;把鉴权、计费等短请求和生成类长请求分开管理连接。

对普通人来说,一个实际意义是:你觉得“AI 回答很慢”,有时并非模型在思考,而是你的请求正在网关排队,等一条空闲连接。具体超时与并发参数,各家网关差异很大,以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。