更新时间:2025-10-14 GMT+08:00
分享

实例故障

故障现象及原因

表1 故障现象及原因

故障现象

故障原因

请求响应延迟显著上升(可达正常值的数倍)

  • 客户端请求频率过高,超出实例处理能力
  • 大量请求处于 Pending 状态,排队等待处理

请求错误码 5xx > 10%

  • 大量长输入请求导致模型推理占用大量显存
  • KV Cache 资源耗尽,新请求无法分配内存

请求错误码 5xx = 100%

  • 进程因死锁、内存溢出等原因进入挂起状态

偶发请求错误码 5xx

  • 按照处理方法排查定位失败原因

偶发请求出现TTFT,TPOT突增

  • 按照处理方法排查定位失败原因

处理方法

为确保业务连续性并尽快恢复服务,建议您调整 RPM 流控策略,限制请求数量,同时执行以下操作重启异常实例:以下给一个示例按照步骤来定位到对应的pod节点上。

  1. 先调下每个instance的接口查看是否有错误信息,如果绑了LB或者APIG,使用域名地址调用接口可能会到任意一个instance,依次进入每个instance对应的节点查看日志即可

  2. 然后执行以下命令查看下pod的状态和名称,混部场景和PD分离场景基本差不多,也是根据--vllm-log-path这个参数看对应的日志地址,根据名称前缀确定是哪一个日志文件,到每个实例节点挂载的日志目录去看请求日志

    kubectl get pods -o wide | grep vllm

  3. 也可以进到pod容器里面查看日志,也可以直接使用下面的命令查看下当前pod的最新日志,如果确认节点已经不是Running状态就无需看日志,直接做摘流即可。

    kubectl logs -f ${POD_NAME}

  4. 确认有问题的pod后,可以根据pod的前缀部分查看是哪个instance出现了问题,可以用下面命令确认出现问题的instance

    kubectl get instance | grep infer-vllm-hhh23

  5. 根据多实例推理服务手动摘流指导将该实例从服务负载均衡中摘流,确认没有新的请求进入该实例,并且已经进入的请求全部处理完毕。
  6. 执行以下命令查看摘流后的实例名称,状态为Concerning。

    kubectl get instance

  7. 执行以下命令删除异常实例,删除后会重新拉起一个新的实例。

    kubectl delete instance ${INSTANCE_NAME}

相关文档