执行摘要
日志增加 worker 进程退出码
当 worker 进程意外退出时,仅记录进程名无法区分失败类型(如 OOM 被 SIGKILL、段错误 SIGSEGV 或 Python 异常退出码 1),增加退出码可让用户和开发者直接从日志判断故障类别。
可快速合入,提升调试体验。
无 review 讨论。
当 worker 进程意外退出时,仅记录进程名无法区分失败类型(如 OOM 被 SIGKILL、段错误 SIGSEGV 或 Python 异常退出码 1),增加退出码可让用户和开发者直接从日志判断故障类别。
可快速合入,提升调试体验。
无 review 讨论。
修改 vllm/v1/executor/multiproc_executor.py 中 monitor_workers 函数:
next(h.proc.name ...) 改为获取完整进程对象 proc = next(h.proc ...)。proc.name 和 proc.exitcode。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
vllm/v1/executor/multiproc_executor.py |
执行器 | modified | 5.67 |
vllm/v1/executor/multiproc_executor.py
core-logic
单文件修改,在 worker 监控日志中增加进程退出码输出。
# vllm/v1/executor/multiproc_executor.py
# 修改前:仅记录进程名
# 修改后:记录进程名和退出码,便于区分 OOM、段错误等
def monitor_workers():
sentinels = [h.proc.sentinel for h in workers]
died = multiprocessing.connection.wait(sentinels)
_self = self_ref()
if not _self or getattr(_self, "shutting_down", False):
logger.debug("MultiprocWorkerMonitor: shutdown already initiated")
return
_self.is_failed = True
# 获取进程对象本身而非仅进程名
proc = next(h.proc for h in workers if h.proc.sentinel == died[0])
logger.error(
"Worker proc %s died unexpectedly (exit code: %s), "
"shutting down executor.",
proc.name,
proc.exitcode, # 新增:输出退出码
)
_self.shutdown()
callback = _self.failure_callback
if callback is not None:
_self.failure_callback = None
callback()
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
风险极低:纯日志格式变更,不改变控制流或异常处理逻辑,不会引发回归。
影响范围极小,仅改进 MultiprocWorkerMonitor 的错误日志可读性,对功能无影响。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论