运行生产运维约 12 分钟
生命周期与健康检查
一个部署实例的五种状态;部署完成不等于能用,要等 /health 探活通过;停止和删除各做什么。
依据 agent-runtime develop@0a47a523(2026-11-12)核实
五种状态
一条部署记录的状态是这几个之一:
| 状态 | 含义 |
|---|---|
pending | 已登记,正在拉起 |
running | 部署器报告已拉起 |
running_not_ready | 在运行但还没就绪 |
stopped | 已停止 |
failed | 部署失败 |
running 不等于能用
进程起来了,不代表智能体能回答问题:可能还在加载模型配置、连接数据库。所以部署管理器在部署器报告成功之后,还要等它就绪:
- 读部署记录,状态是
running - 有访问地址的话,请求
地址/health,返回 2xx 才算就绪 - 不满足就等 20 秒再查;状态变成
failed立即报错 - 600 秒还没就绪,报超时;外层把状态标为
failed
探活还有一个贴心的兜底:配置的对外 IP 可能被本机访问策略拦住,主地址探活失败时,会把主机换成 127.0.0.1、端口不变再试一次。
子进程部署器自己也有一道检查:启动后等 2 秒,如果进程已经退出,就从日志文件里读出错误信息,直接判失败。
停止与删除
| 操作 | 做什么 |
|---|---|
stop_deployment | 找到部署方式(没传就逐个策略去查记录),调部署器停止,成功后状态改 stopped |
delete_deployment | 先停止,再删策略记录,最后删部署记录 |
get_deployment_status | 读部署表里记录的状态 |
查询状态时,策略层还会问一次部署器"实际状态":如果实际已经停了而记录还是别的,就把记录改成 stopped。
企业运维要补什么
Runtime 给的是"拉起、等就绪、停止、删除"这些基本动作。生产环境通常还要自己补:
- 持续健康检查:上面的探活只发生在部署时;运行中的实例要靠容器平台的探针或外部监控
- 重启策略:本关核实的子进程部署器里没有看到进程退出后自动拉起的逻辑;用 Kubernetes 部署时,由集群的 Deployment 负责重建 Pod
- 团队里的异常:智能体"活着但卡住"这种情况,探活发现不了,要靠 agent-core 的 ReliabilityRail
动手:预测部署结果
模拟器加载中…
小结
- 部署完成要等到 running 且
/health通过,默认最多 600 秒。 - 失败、超时都会把记录标成 failed;子进程起来 2 秒就退出会被立刻发现。
- 部署时探活只是第一道检查,运行中的健康要靠平台探针和监控。
源码出处
- agent-runtime/management/openjiuwen_runtime/management/models/enums.py:16
class DeploymentStatus部署状态 - agent-runtime/management/openjiuwen_runtime/management/manager.py:387
async def _wait_until_deployment_ready等待就绪:轮询 + 探活 + 超时 - agent-runtime/management/openjiuwen_runtime/management/manager.py:365
async def _check_health_endpoint探活与 127.0.0.1 兜底 - agent-runtime/management/openjiuwen_runtime/management/manager.py:304
async def delete_deployment删除 = 先停再删记录 - agent-runtime/management/openjiuwen_runtime/management/deployments/subprocess/deployer.py:39
class LocalSubprocessDeployer子进程启动后 2 秒检查是否已退出
链接指向固定提交,仓库后续更新不影响这里的行号。
过关测验
1. 部署器报告成功、状态已经是 running,deploy_agent 会立刻返回吗?
2. 实例一直不健康,默认最多等多久?
3. delete_deployment 做了哪些事?