EAS服务的重启或部分参数更新会触发滚动更新。这是一种逐步替换旧实例为新实例的发布策略,可在不停机、保障系统高可用的前提下完成版本升级。
滚动更新
更新过程中,系统依据配置参数创建新实例并逐步替换旧实例。若新实例启动失败,更新将中止,失败实例不接收流量,剩余旧实例继续提供服务,业务不受影响。用户可选择回滚或重新发起更新,且新更新会优先清理此前未完成的失败版本实例。
滚动更新行为由以下两个关键参数控制:
超过期望的实例数(JSON参数:rolling_strategy.max_surge)
描述:更新时最多可额外创建的实例数,支持正整数或百分比。值越大,更新越快。。
例如:100个实例,配置为20,则更新开始即创建20个新实例。
默认值:实例总数的2%(不足1时取1)。
重要超过期望的实例数过大时,大量新实例上线后会立即替换等量旧实例,若新实例未预热,突增流量可能冲击服务稳定性。
最大不可用实例数(JSON参数:rolling_strategy.max_unavailable)
描述:更新过程中允许的最大不可用实例数,用于释放资源,防止因资源不足导致更新过程被阻碍。
例如:设为N,更新开始时立即停止N个旧实例。
默认值:
专属资源组:2025年9月1日前创建的服务,默认为1。2025年9月1日后创建的服务,弹性资源池开启默认为0,未开启默认为1。
公共资源组:0。
灵骏智算Quota:2025年9月1日前创建的服务,默认为0。2025年9月1日后创建的服务,默认为实例数的2%(不足1时取1)。
重要单实例服务若将最大不可用实例数设为1,滚动更新时旧实例会在新实例启动前退出,期间服务无可用实例,将短暂不可用。
最大不可用实例数过大可能导致过多实例同时下线,剩余实例不足以承载流量,影响服务可用性。
优雅退出
优雅退出的参数会影响滚动更新中实例退出的稳定性。
优雅退出时间 (JSON参数:eas.termination_grace_period)
描述:实例优雅退出等待时间,单位秒。实例进入Terminating状态后,流量被摘除,系统等待30秒让其处理完已接收请求后再下线。若请求处理时间较长,建议调大该值。
默认值:30。
是否发送SIGTERM(JSON参数:rpc.enable_sigterm)
描述:SIGTERM是终止进程的信号。JSON参数取值true、false。
false:实例退出时不会发送SIGTERM信号。
true:实例退出时,系统立即发送SIGTERM信号,服务主进程需在信号处理函数中实现自定义优雅退出逻辑,否则可能直接终止,导致优雅退出失败。
默认值:不发送(false)。
默认不发送SIGTERM信号。因为业务容器默认不会对SIGTERM做拦截处理,如果收到SIGTERM信号,业务进程会立即退出,从而导致优雅退出过程失效,业务受损。
请求耗时差异大的服务,建议启用SIGTERM。比如请求处理时间最短几秒,最长可能30分钟,固定优雅退出时间为30分钟会拖慢服务更新。此时需业务容器配合在收到SIGTERM信号后,处理完存量请求后就主动退出,实现更灵活的退出控制。
异步推理服务无需主动开启SIGTERM。EAS管控层在实例退出时,会自动响应SIGTERM信号,停止订阅新请求,并等待已有请求处理完成后再退出实例。