![[Bug]: RPC call to sample_tokens timed out. Qwen3.5-397B-A17B](https://www.chat-gpts.plus/wp-content/uploads/2026/06/35496-ef53c44d.jpg)
[Bug]: RPC call to sample_tokens timed out. Qwen3.5-397B-A17B
快速结论:该报错通常发生在部署 Qwen3.5-397B-A17B 模型并执行推理请求时,原因是共享内存广播块在 60 秒内无可用资源,导致 EngineCore 进程超时崩溃。优先排查模型的权重加载、KV Cache 量化或编译阶段是否阻塞了进程,以及共享内存配置是否充足。
问题场景
用户在 NVIDIA H200 GPU 上部署 Qwen3.5-397B-A17B 模型,遵循官方部署指南(https://github.com/vllm-project/recipes/blob/main/Qwen/Qwen3.5.md),使用 8 张 GPU 并启用了 tensor_parallel_size=8、enable_prefix_caching=True、enable_chunked_prefill=True 等配置。初始部署时服务可以正常启动,但当通过 curl 发送标准聊天补全请求(temperature=0.7, max_tokens=512)后,系统出现超时错误并导致服务崩溃,返回 HTTP 500 错误。
报错原文
No available shared memory broadcast block found in 60 seconds. This typically happens when some processes are hanging or doing some time-consuming work (e.g. compilation, weight/kv cache quantization).
EngineCore encountered a fatal error.
(EngineCore_DP0 pid=287050) ERROR 02-27 15:59:56 [core.py:1080] TimeoutError: RPC call to sample_tokens timed out.
最终的 HTTP 响应为:
{"error":{"message":"EngineCore encountered an issue. See stack trace (above) for the root cause.","type":"InternalServerError","param":null,"code":500}}
原因分析
可能原因:共享内存广播块在 60 秒内无法分配,导致 RPC 调用 sample_tokens 超时。这通常是因为某些进程在初始化或推理准备阶段被阻塞,例如:
- 模型权重加载或 KV Cache 量化过程中耗时过长。
- 编译阶段(如 VLLM_COMPILE mode 3 模式)占用了大量时间,导致其他进程无法正常获得共享内存资源。
- 共享内存(/dev/shm)容量不足或系统配置限制。
- 多进程同步问题:在 DP(数据并行)环境下,EngineCore 进程可能因其他进程挂起而无法获取广播块。
该 Issue 中未提供明确的环境输出(python collect_env.py 的结果被占位符替代),因此无法进一步确定具体原因。
环境排查
- vLLM 版本:v0.16.1rc1.dev48+ga572baff5(从 dump 日志确认)
- 模型路径:确认模型文件是否正确加载至磁盘,推荐使用 Hugging Face 官方仓库路径
- GPU 配置:H200,tensor_parallel_size=8,data_parallel_size=1
- dtype:torch.bfloat16
- 共享内存容量:检查 /dev/shm 的可用空间(推荐至少 64GB 以上,视模型大小调整)
- 编译模式:compilation_config 使用了 VLLM_COMPILE mode 3,包含多个自定义算子(如 unified_attention、unified_mla_attention 等),可能导致首次推理时编译耗时过长
解决步骤
- 增加共享内存容量:在 Docker 或宿主机中,通过
--shm-size参数设置更大的共享内存。例如 Docker 启动时添加--shm-size 256g。如果已运行,可 先尝试停止服务并重新使用更大的 shm-size 启动。 - 禁用或调整 compile 配置:将此作为可优先尝试的方案。在 vLLM 启动参数中添加
--enforce-eager以禁用图编译,或设置--compilation-config '{"level": null}'来避免首次编译阻塞。如果问题解决,再按需重新启用编译优化。 - 禁用 prefix caching 或 chunked prefill:可优先尝试。在启动时移除
--enable-prefix-caching和--enable-chunked-prefill,以简化推理流程,观察是否仍有超时。 - 调整 GPU 通信配置:检查是否启用了
--disable-custom-all-reduce。如果当前未启用,可尝试添加该参数,避免自定义 all-reduce 与共享内存冲突。 - 监控进程状态:在再次启动请求前,使用
nvidia-smi和htop检查是否有进程(如编译、量化)长期占用资源。可等待这些任务完成后再发送请求。
验证方法
完成上述步骤后,重新启动 vLLM 服务,并再次执行 curl 请求:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3.5-397B-A17B",
"messages": [
{"role": "user", "content": "hello"}
],
"temperature": 0.7,
"max_tokens": 512
}'
如果服务正常返回 JSON 格式的响应(包含 id、choices 等字段),并且 EngineCore 日志中不再出现共享内存超时或 RPC timeout 错误,则说明问题已被解决。同时可多次发送请求,确保系统稳定。



