首页/AI/大模型部署与运维速查/上游探活与被动摘除

上游探活与被动摘除

双机制配合:被动摘除(max_fails/fail_timeout 按真实请求失败计数)加上轻量主动探针;探针端点选 /health 类,避免触发推理。

探活与摘除怎么配合

上游探活有两种机制配合使用:被动摘除按真实请求的失败计数把异常实例暂时移出,主动探针定期请求轻量端点确认实例还活着。探针端点要选不触发推理的路径,否则探针本身就会变成额外的负载来源。

基本信息

适用平台网关与推理服务实例
被动机制按失败次数与失败窗口临时摘除
主动机制定期请求轻量探针端点
端点选择健康检查类路径,避免触发推理

被动摘除片段

被动摘除片段
upstream llm {
    server 127.0.0.1:8000 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:8001 max_fails=3 fail_timeout=30s;
}

典型使用场景

  • 实例异常:连续失败后自动摘除,减少错误暴露
  • 后端扩容:新实例通过探针后才接入流量
  • 滚动重启:靠探针判断实例是否已经就绪
  • 容量核对:摘除之后剩余容量是否足够,要一起看
  • 来源限制:探针端点加鉴权或限制来源,避免成为公网可探测的接口

机制与注意点

机制触发条件注意
被动摘除真实请求连续失败失败计数窗口不要设得太短
主动探针按固定间隔请求轻量端点间隔要在及时性与额外负载之间平衡
就绪判断实例启动完成可接流量存活与就绪是两个不同概念
开源网关的主动健康检查能力有限:需要时可引入外部探活组件或应用网关替代。
区分存活与就绪:进程活着不代表模型已加载完成,探针要能反映是否真能接流量。
摘除之后要能自动恢复:只摘不还就得靠人工介入,恢复条件需要明确写下来。
摘除与排空要分开:摘除只是不再分新流量,已在处理的长请求仍占着连接,排空需要另外安排。
探活结果也值得记录:把失败次数与恢复时间做进监控,才能发现实例在反复抖动。

易错点

  • 用重接口做探活:探针自身加重负载,实例忙时被误摘除会引发流量转移连锁
  • 探针间隔过短:频繁探测在高并发下也会成为额外负担
  • 失败计数窗口设得太短:偶发失败就摘除,实例反复进出造成抖动
  • 摘除后不看剩余容量:后端变少而流量不变,剩余实例容易被压垮

数据来源与参考

  • Nginx 官方文档:upstream 与 max_fails(nginx.org/en/docs)
  • vLLM 官方文档:健康检查端点(docs.vllm.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌