Claude Code self-hosted-runner 延迟关机怎么配

2.1.238:`--defer-shutdown-max-min` 让 SIGTERM 后先服务已连接会话,再在时限内收尾。滚动发布自托管 runner 时少砍人。

Claude Code self-hosted-runner 延迟关机怎么配

claude code runner 延迟关机:自托管 runner 滚动升级时,旧进程一收到 SIGTERM 就硬切,已连上的会话会掉。2.1.238 增加 --defer-shutdown-max-min:收到终止信号后,继续服务已经连上的会话,到点再清理退出。示例写法:claude self-hosted-runner --defer-shutdown-max-min 15

作者CodePass 技术编辑

解决什么运维痛

蓝绿或滚动发布里,负载均衡摘掉实例后,编排系统常立刻发 SIGTERM。交互 Remote Control / 长任务若还挂在旧 runner 上,用户会看到会话丢、权限半截、或「环境 lost」。宽限期把「摘流量」和「杀进程」拆开:新流量去新实例,旧会话有最多 N 分钟收尾。

这和产品里的「额度恢复自动继续」不是一回事。自动继续管的是 claude.ai 用量桶;本参数管的是你机器上的 runner 生命周期。用量侧见 额度恢复自动继续。自托管总览见 自托管环境是什么

怎么选分钟数

  • 15 分钟:常见 PR 评测、中等 refactor 够用。
  • 更长:只在你确认任务墙钟会超过 15、且节点成本可接受时加。
  • 过短:等于没开;过长:坏节点拖着不退,占用配额。

配合编排:先 preStop 摘流量,再等宽限,最后强制杀。宽限只覆盖「已连接」;新连接应被拒或打到新 runner,避免宽限窗口变成黑洞。

和代理鉴权一起看

同版本还有 --proxy-authorization-command / --proxy-authorization-file,给每次出站连接现签 Proxy-Authorization。企业出口代理常要求短时 token,和延迟关机常成对出现在同一套 runner 清单里。参数细节以 CHANGELOG 2.1.238 与 claude self-hosted-runner --help 为准;总览仍见 自托管环境是什么

验收清单

  1. 起 runner 带 --defer-shutdown-max-min 15
  2. 挂上一个长会话。
  3. 对进程发 SIGTERM(或模拟滚动更新)。
  4. 确认会话在时限内仍可用,超时后干净退出,无僵尸 worktree。

日志里应能区分「graceful drain」与「强制终止」。若宽限内权限对话框卡住,结合历史「等权限时环境关机被标 lost」类修复一起看,升级 runner 与 CLI 到同一代。

生产上还建议:编排层把「最大宽限」写成与 --defer-shutdown-max-min 一致或略长,避免 kube 先硬杀、CLI 还以为自己在 drain。监控指标加上「drain 中会话数」和「强制杀掉次数」,后者飙升说明宽限不够或任务过长,该拆任务而不是无限加分钟。