启动 vllm serve 后外壳进程还在,但请求一律 500,日志只有 EngineCore died,机器是 2 张 3090,模型是 14B 的 AWQ 版本。
把日志和配置对完,能解释这个现象的基本就这几处。真正的堆栈在子进程日志里,主进程只报一句死了;显存不足导致子进程被 OOM killer 干掉,外壳无感知;端口被上一个没退干净的进程占着,新引擎绑不上;AWQ 内核与当前算力不匹配,初始化阶段就崩。
前台启动一次,把子进程日志直接打屏
vllm serve Qwen/Qwen2.5-14B-Instruct-AWQ --gpu-memory-utilization 0.85 --max-model-len 8192
随后确认显存是否被占满
nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv
接着清掉残留进程再重启
pkill -f vllm; sleep 2; nvidia-smi --query-compute-apps=pid,used_memory --format=csv
末了把日志重定向到文件方便回溯
vllm serve Qwen/Qwen2.5-14B-Instruct --port 8001 > vllm.log 2>&1 &
这次没动代码,只在配置和运行环境上找原因。
恢复的判定其实很直接。服务在前台启动时能看到完整初始化日志,进程存活超过十分钟,/health 返回 200 且试探请求有正常输出。
外壳进程活着不代表引擎活着,健康检查要看 /health 而不是端口是否可连,这是最容易误判的一处。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
