ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第 22-3 篇:vllm_mgr.py——进程守护与看门狗

第 22-3 篇:vllm_mgr.py——进程守护与看门狗 上一篇22-2《/admin API——状态、配置、加载、转换》下一篇23-1《国密 SM3——KAT 红线先于实现》只读验证篇本文仅板端 --help/status 只读实测未对运行中的引擎演示 start/stop/kill诚实边界见文内一句话导读vllm_mgr 进程守护与看门狗读 start/stop/restart、状态轮询与进程名精确匹配的坑诚实边界是——本文仅板端只读验证未对运行中的引擎演示启停操作。关键词vllm_mgr、进程守护、看门狗、start/stop、RK3588admin API 是手动挡tools/vllm_mgr.py是自动挡一个stdlib-only的进程守护负责 start/stop/restart、状态页、NPU 自检子进程。这篇读它的进程管理逻辑与精确匹配进程名的坑并交代清楚守护工具本身只该在部署机上跑教程的启停实验要由你在自己的板上执行——我们这轮没有对着正在服务的引擎演示 kill。1. 知识点看门狗要回答的四个问题进程守护的本质是四个问题怎么启动nohup拉起引擎子进程日志重定向怎么知道它还活着轮询/health//admin/api/status的 HTTP 状态而不是只看进程表死了怎么办按配置自动拉起或至少让你一条命令 restart停SIGTERM 优雅停 → 超时 SIGKILL两级降级。引擎还有一个特殊的守护需求/admin/api/config/save落盘的配置文件是 mgr 的启动依据vllm_mgr.py第 5–10 行注释配置由 admin 页写、mgr 按它启停——这样你在网页上改的配置重启后依然生效闭环成立。2. 对应代码mgr 的进程语义tools/vllm_mgr.py头注释12–25 行把用法与配置 schema 写得很完整usage: vllm_mgr.py [-h] [--serve [SERVE]] [{start,stop,restart,status,selftest,serve}] config schema由 /admin/api/config/save 写入: { model_dir: ..., wmode: q4, port: 8080, threads: 8, npu: true, ..., env: {OMP_NUM_THREADS: 4} }start/stop/restartnohup 进程表管理stop 先 SIGTERM 再 SIGKILL15–17 行注释selftest跑--npu-calib子进程并回读结果serve一个纯 stdlib 的 HTTP 状态页默认 8082 端口ThreadingHTTPServer——admin 页在引擎关机后靠它知道守护还活着、可以点启动。进程名精确匹配的坑本项目文档与代码反复强调守护脚本如果用pgrep vllm_kestrel这类宽匹配很容易把自己的命令行/同名前缀进程算进去bash -c pkill vllm_kestrel这种自匹配在 Day 11–17 的板端实验里反复出现退出码被误杀成 -1。成熟做法是匹配完整可执行路径或精确进程名 PID 白名单并在stop前先确认 PID 属于引擎而不是守护自身。3. 改动后果工具实测与不该做什么实测口径板端 RK3588 / 2026-09-07。只做只读实测。$ python3 tools/vllm_mgr.py --help usage: vllm_mgr.py [-h] [--serve [SERVE]] [{start,stop,restart,status,selftest,serve}] vllm_kestrel supervisor positional arguments: {start,stop,restart,status,selftest,serve} options: -h, --help ... --serve [SERVE] run the HTTP supervisor (default port 8082)为什么这轮不演示 start/stop引擎正在为本系列的 HTTP/多模态实验服务22-2 的uptime_s还在涨。对着活引擎演示 kill → 拉起会打断实验且无收益守护语义的正确验证方式是在独立的部署机上或专门开一个测试端口实例执行。留给学员的任务里包含完整步骤。这一节本身想强调的改动后果是反面纪律如果你在共享/生产实例上随手vllm_mgr.py restart会踩中三类问题——配置没save导致重启后配置回滚、宽匹配误杀守护自身、以及 SIGKILL 时 KV/磁盘状态没落盘Day 12 的 disk-kv 恢复机制就是为这种断电场景兜底的。4. 学员调试任务A 档板端动手需独立实例复制一份引擎与模型配置用--port 8802起第二个测试实例不碰生产实例用vllm_mgr.py status看它如何判定活着读源码找它探的是哪个端点/文件stop→ 观察日志里的 SIGTERM 收尾输出 →start→status确认拉起再模拟一次kill -9 pid看守护或手动 restart如何恢复故意把pgrep匹配改宽如pgrep -f vllm复现误杀守护自身的坑并记录。B 档纯读源码读vllm_mgr.py的 stop/start 与状态判定回答① stop 的 SIGTERM→SIGKILL 两级降级在什么条件下触发、为什么不能只用 SIGKILL②serve模式的状态页与引擎/admin状态页是什么关系谁依赖谁③ mgr 与/admin/api/config/save的写配置 → 按配置启动闭环里如果配置文件损坏JSON 解析失败mgr 会怎么处理——读代码找错误分支。预期输出一次在独立实例上完成的 start/stop/restart 闭环日志外加一张守护设计四问的自我检查表。收尾本篇源码点名vllm_mgr.py进程语义 12–25、stop/start 实现开源仓库Kestrel-LLM (Gitee)AGPL-3.0-or-later 或商业许可二选一下篇预告引擎能跑、能服务、能被守护了。Day 23 起进安全专题第一课国密 SM3——为什么先有标准答案KAT 向量再写实现是密码学的第一纪律。
返回列表