Skip to content

PM2 worker 验收误读陈旧 _tree_pids,可能对健康部署触发错误回滚 #9

Description

@zj1123581321

现象

生产升级验收通过 PM2 进程树确认 worker 时,若读取 pm2 jlistpm2_env.pid_tree_pids,会把健康服务误判为 worker 未启动:前者可为 null,后者可能残留上一次 restart 的已退出 PID,进而触发错误回滚。

证据

来源:agent-config#139。

  • 目标版本 f622162 日志记录 3 个 worker 启动、ready、模型池初始化成功;
  • 只读复核确认真实 app PID 位于 pm2 jlist 条目顶层 pid
  • _tree_pids 在回滚后仍保留上一目标版本 PID,不能作为当前态证据。

期望行为

  1. PM2 app PID 只读取条目顶层 pid
  2. 不使用 pm2_env.pid_tree_pids 作为当前进程树真相;
  3. worker 门禁使用 PPID 直属关系、命令/worker 身份、非 zombie 与 ready/健康证据联合判定;
  4. 门禁失败时 fail-loud,并保留应用启动日志证据,避免假阴性静默触发回滚。

验收

在 PM2 管理的多 worker 服务上连续重启两次,验收仍只识别当前 app 的直属 worker,不命中旧 _tree_pids,也不误算 PPID=1 的孤儿 worker。

追踪来源:https://github.com/zj1123581321/agent-config/issues/139

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions