更新时间:2026-06-18 GMT+08:00
分享

在线服务优雅停机

场景描述

推理在线服务的优雅停机用于服务下线、升级、缩容、故障迁移等场景,目的是平滑结束在途请求、释放资源、保存状态、避免强制中断,保障业务连续性与数据完整性。

典型适用场景:

  • 服务正常下线:业务迭代、版本更替、资源回收时,等待当前推理请求完成后再终止实例,避免客户端报错;
  • 滚动升级:更新模型或镜像时,逐步优雅下线旧实例、拉起新实例,实现零中断平滑升级;
  • 实例缩容:减少副本数、释放闲置资源时,优先优雅终止空闲实例,不影响正在处理的请求;
  • 节点、硬件故障迁移:NPU、CPU、交换机异常触发迁移时,优雅停机保存临时推理上下文,减少任务失败;
  • 大模型、长任务推理:流式、长文本推理耗时久,避免强制终止导致结果残缺、会话中断。

约束限制

  • 健康检查联动:已配置健康检查的服务,开启优雅停机后,收到停止指令会强制延后 3 分钟再停止。
  • 资源池限制:专属资源池和公共资源池均支持。
  • 部署模式:基础模式、多角色分离模式均支持;多角色分离需所有推理单元统一配置。
  • 命令依赖:停机命令依赖容器内基础工具(sh、kill、trap 等),依赖缺失会导致执行失败。

优雅停机配置操作

登录ModelArts管理控制台,在左侧菜单栏中选择“模型推理>在线推理”,进入在线服务管理页面。部署在线服务时,在“单元配置 > 更多配置”中勾选“优雅停机”,并设置“停机时间”“停机命令”。具体操作请参见推理在线服务单机部署

“停机时间(秒)”:建议普通服务 30s;大模型或长任务 60–300s。

“停机命令”(容器内执行),以下示例为3选1,只填写1条即可:

  • 示例 1(终止进程)
    kill -SIGTERM $(pgrep -f app.py)

    适用:直接优雅终止业务主进程

    原理:发送标准优雅终止信号,让进程自行收尾再退出

    适用场景:Python 脚本、Flask/FastAPI 独立进程服务

  • 示例 2(优雅退出)
    trap 'exit 0' SIGTERM

    适用:容器内脚本常驻进程,提前捕获停机信号

    原理:提前注册信号监听,收到停止指令自动平稳退出

    适用场景:shell 常驻服务、后台守护进程

  • 示例 3(释放连接 / 保存状态)
    /bin/sh -c stop_service.sh

    适用:复杂停机逻辑(多步骤收尾)

    原理:调用容器内自定义停机脚本,可实现保存日志、断开连接、缓存落盘、关闭子进程等全套动作

    适用场景:业务流程复杂、需要自定义收尾操作的服务

配置完成后,停止或升级服务,观察在途请求正常完成、无报错即可。

相关文档