[Bug]: API server closes connection with zero response (no HTTP status) when the prompt contains `and /` — reproducible on /tokenize with GL

[Bug]: API server closes connection with zero response (no HTTP status) when the prompt contains `and /` 通常发生在请求体经过网络边缘设备(如 WAF)时,请求在到达 vLLM 服务端之前就被 T

快速结论:[Bug]: API server closes connection with zero response (no HTTP status) when the prompt contains `and /` 通常发生在请求体经过网络边缘设备(如 WAF)时,请求在到达 vLLM 服务端之前就被 TCP 重置。优先排查客户端与服务器之间的 WAF/反向代理/安全网关策略,而不是模型或 tokenizer。

适用环境:vLLM 版本 0.1.dev20051+g487ecf187(docker image:vllm/vllm-openai:glm53-flash);CUDA/GPU:8 × NVIDIA H20-e3(TP=8 + EP);模型:GLM-5.3-Flash;操作系统与 Python 版本在 Issue 中未明确提供。

最快修复方案:联系网络/安全团队检查并修正客户端与服务器之间的 WAF 策略,避免将普通文件路径(如 and 2023/)误判为 SQL 注入特征并重置 TCP 连接。Issue 中确认修正 WAF 策略后,原本失败的请求可正常 tokenize 与推理。

注意事项:该问题并非 vLLM 或 GLM tokenizer 的缺陷。仅靠 vLLM 配置或代码无法修复;需要网络与安全侧配合。Issue 中未提供具体的 WAF 厂商、规则名称或完整修正配置,实际策略调整需由对应网络设备管理员完成。

问题场景

用户通过 OpenAI 兼容 API 调用 vLLM 服务,模型为 GLM-5.3-Flash,使用 prefix caching、expert parallel、speculative decoding(mtp)等配置。当请求 prompt 或消息内容中包含形如 and 2023/ 的文本模式(即单词 “and” + 空格 + 数字 + 斜杠,常见于文件路径如 2023/2024/2025.md)时,API 服务端没有返回任何 HTTP 响应,客户端收到连接被重置的错误。该问题可稳定复现,且同样出现在不涉及模型、调度器、工具解析或 spec decoding 的 /tokenize 接口上。

报错原文

curl: (52) Empty reply from server
# 客户端收到 ZERO response bytes,没有 HTTP 状态码、响应头或响应体

APIConnectionError: Connection error.
# 生产环境中客户端重试时反复出现,且没有输出 token

原因分析

根据 Issue 后续更新,根因是客户端与服务器之间的网络边缘 WAF 将请求体中的 and 2023/ 模式匹配为 SQL 注入特征,并在请求到达 vLLM 服务端之前重置了 TCP 连接,导致零响应字节。该问题与 GLM 模型、tokenizer、chat template、engine、scheduler、tool parser 或 speculative decoding 均无关。之所以容易误判为 tokenizer 问题,是因为 /tokenize 接口同样复现,但实际请求从未到达应用层。

环境排查

  • 确认客户端到 vLLM 服务之间是否存在 WAF、反向代理、API 网关或安全设备。
  • 确认 WAF 是否对请求体中的文本模式(如 SQL 注入特征)进行匹配并执行连接重置动作。
  • 确认 vLLM 版本、模型、启动参数,但注意这些配置与根因无关。
  • Issue 中未提供操作系统、Python 版本、PyTorch/CUDA 具体版本,这些项不影响本问题的定位。

解决步骤

  1. 先判断请求是否到达 vLLM 服务端:向一个不存在的路径发送相同 payload,若同样被重置,则请求大概率在应用层之外被拦截。
  2. 从不在 WAF 后面的主机发送相同请求,确认服务端是否返回正常的 404400 Bad Request,以排除 vLLM 本身问题。
  3. 联系网络安全团队,检查 WAF 规则中是否将 and 2023/ 这类普通文本误判为 SQL 注入签名。
  4. 修正 WAF 策略,放行或调整对文件路径类文本的匹配规则。
  5. 修正后,用原始失败 payload 重新调用 /tokenize/v1/chat/completions 验证。

验证方法

使用原始触发失败的请求:

curl -sS -X POST http://<HOST>:<PORT>/tokenize \
  -H "Content-Type: application/json" \
  -d '{"model":"glm-chat","prompt":"and 2023/"}'

修正 WAF 策略后,应返回正常的 tokenize 结果(包含 countmax_model_lentokens),而不是 curl: (52) Empty reply from server。同时确认 /v1/chat/completions 的原始失败请求也能正常返回推理结果。

参考来源

vllm-project/vllm #56569

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 23066

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注