💻 姊妹篇写流量比例与技能切片;本文写控制面卫生:
doctor --deep 拉齐服务发现,清重复 launchd,金丝雀端口切片隔离试错,Webhook 失败摘要进合并就绪 JSON 再广播。slug:2026-openclaw-clustervps-doctor-deep-launchd-canary.html。金丝雀技能 · 租户与摘要 · 片段合并 · 博客首页。
痛点:金丝雀前先「深度洗澡」
浅检只看端口会把双守护、错 plist带进晋升窗,放大后出现端口闪断、重试风暴、探针假绿。
- 重复 launchd:同标签多次加载,双实例抢端口,切片失效。
- 发现漂移:热重载后旧监听未收,浅检就绪与真实监听不一致。
- 失败噪声:Webhook 原文刷屏,掩盖金丝雀单点根因。
决策矩阵:运维动作 × 巡检深度 × 风险控制
| 运维动作 | 浅层巡检 | 深度巡检加手工收敛 | 结论 |
|---|---|---|---|
| 清理重复 launchd | 仅看进程名存在 | 比对标签与监听;删重载后再快照。 | 晋升前必做。 |
| 金丝雀端口切片 | 与生产共用端口段 | 金丝雀独占端口区间;合并探针分字段验收。 | 隔离试错面。 |
| Webhook 失败广播 | 原文直推聊天工具 | 租户加错误码合并为一条再广播。 | 不做摘要则 on-call 成本高。 |
最小可复现步骤清单(建议按序执行)
假设各节点具备管理员权限与统一配置仓库。
- 步骤一:金丝雀节点跑深度巡检,导出监听、launchd 标签与片段哈希快照。
- 步骤二:比对 plist,对重复标签卸载后只留一份权威文件并刷新引导。
- 步骤三:金丝雀书签独占端口区间;负载均衡小比例指向新口,生产保持旧口至合并探针连续三次通过。
- 步骤四:网关失败队列开摘要:同租户同错误码在滑动窗内合并一条,附首尾时间与节点列表。
- 步骤五:摘要写入合并就绪 JSON,Notifier 做一次全量广播降噪。
- 步骤六:全集群浅检对比快照,无孤儿监听与重复标签后再扩金丝雀比例;变更单附巡检附件路径。
回滚杠杆(建议与步骤镜像书写)
甲负载切回旧端口,新口空载观察摘要归零。乙 plist 从仓库回滚上一版并冷启守护,禁手改未入库文件。丙合并 JSON 关金丝雀字段并广播「已撤切片」。
可引用阈值(写进抬线与告警)
三
合并探针连过三次再扩权(示例)
一
单机每业务标签仅一份权威 plist
窗
摘要滑动窗与重试链及令牌轮换对齐
常见问题(精简)
深度巡检拖慢发布?放在扩权前闸口,远小于误切后的救火成本。要换网卡?不必,书签与监听在配置层唯一即可。摘要丢细节?摘要给值班入口,原文进日志索引。
本文仅为工程实践建议。命令与发行版以官方为准;变更前小流量验证并保留 plist 与端口快照。