进程生命周期管理
Process Lifecycle Management
管理子进程注册、僵尸进程清理、有序关闭和跨平台端口释放
子问题
1.子进程 PID 追踪与注册
2.僵尸进程检测与强制终止
3.多步有序关闭编排
4.跨平台(Windows/Unix)端口释放
5.SDK 隐藏子进程 PID 的拦截与捕获
6.并发进程池的零轮询背压控制
7.daemon 启动时跨会话残留进程的激进清理
8.stale session 阻塞孤儿收割的级联问题
各项目的解法1 solutions
Signals
横向对比
| 维度 | claude-mem |
|---|---|
| 进程追踪方式 | Map<PID, TrackedProcess> 注册表 + SDK spawn 拦截捕获 PID |
| 僵尸防护策略 | 三级收割:注册表级(session消失) + 系统级(ppid=1) + daemon子进程级(idle>2min) |
| 关闭编排 | 7步有序关闭:HTTP→Session→MCP→Chroma→DB→子进程→PID文件 |
| 信号升级 | SIGTERM 等待 5s → SIGKILL 强杀,事件驱动非轮询 |
| 跨平台适配 | Windows: taskkill /T /F + PowerShell WQL枚举 + 500ms端口释放延迟 |
| 并发控制 | Promise waiter队列实现零CPU开销背压,可配置maxConcurrent |
最佳实践
1.使用 PID 注册表追踪所有子进程,定期收割孤儿进程
2.用自定义 spawn 函数拦截 SDK 的进程创建以捕获 PID
3.SIGTERM→SIGKILL 两阶段升级确保进程必定退出
4.有序关闭时先枚举子进程再关闭服务,避免遗漏
5.Windows 关闭 HTTP server 后需额外延迟等待端口释放