内网推理服务「偶尔连不上」:先查代理环境变量,别查配置

排障 · 8 步 / 10 分钟L1整理于 2026-09-30 有效期 permanent

推理服务明明 curl 得通、端口在听、机器不忙,客户端却报 Connection error,而且「有时能通、有时不通」。根因是客户端进程继承了 http_proxy,把发往内网集群的请求也塞进了代理 —— 代理回 401 把请求挡在 SGLang 之外。判据不是「查得更细」,而是那个 1.7 毫秒的失败耗时:真正的推理请求不可能这么快返回。

本地大模型部署环境变量代理SGLang排错

这条适用于

版本指纹

代理端口因机器而异;判据与修法与具体端口无关

具体做法

# 启动客户端前,把代理变量摘干净(本例为 dsh,其他客户端同理)
env -u http_proxy -u HTTP_PROXY -u https_proxy -u HTTPS_PROXY \
    -u all_proxy -u ALL_PROXY \
    NO_PROXY="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.1,localhost" \
    no_proxy="192.168.0.0/16,10.0.0.0/8,172.16.0.0/12,127.0.0.1,localhost" \
    node node_modules/@deepseek-ai/dsh/lib/bin.js web --no-open
# —— 定位用:判断是否被污染 ——
env | grep -i proxy
# —— 定位用:确认服务活着(注意必须带 --noproxy,否则测的是代理)——
curl -s --noproxy '*' --max-time 12 http://<集群IP>:8888/v1/models
# —— 对照用:走代理会拿到 401 + 1.7ms,直连才是 200 + 真实推理 ——
# 走代理(错误):{"error":{"code":"AUTH_REQUIRED","message":"Authentication required"}}  [HTTP=401 total=0.001698s]
# 直连(正确):正常 SSE data: 流                                              [HTTP=200 total=0.502571s]
失效边界
这个坑最阴的地方是它让所有常规检查全部显示「正常」——端口在听、服务 200、机器不忙、网络不丢包,你查的每一项都是绿的,因为故障根本不在你查的那一层。两个具体的误判陷阱:① 代理对短请求可能照样放行,所以健康检查全绿;② 只有长流式连接会被掐断,而客户端真实调用方式恰好是流式,于是表现为「偶尔能通」。另外,curl 不带 --noproxy '*' 时测不出真实差异,这也是它一直「看起来没问题」的原因。适用边界:本例的代理端口因机器而异,上面给的是判据与修法,不是可照抄的端口号。
← NAS 能不能当模型盘:随机读差 33 倍,加载 6.5 秒变 4 分 47 秒「端口被占用」十次有九次是上次没退干净:换端口只止血,杀残进程才根治 →

← 返回全部排错方案