流量风暴导致接口超时
典型现象/特征
- 前端报
/xxx/xxx接口超时,并带有TraceId - 前端报
Server_504
排查确认步骤
第一步,初步判断:
- 1.可先做初步分类判断:如果是单服务、单接口偶发或持续报错,而其他接口和功能都正常,则更像单功能问题;
- 2.如果是单服务所有接口偶发报错,则更像单个 pod 状态异常;
- 3.如果是单服务所有接口持续报错,则可能是该服务全部 pod 或所在物理节点异常 硬件资源异常;
- 4.如果是所有服务所有接口偶发报错,则优先怀疑 NG、网关或网络问题 网络导致的请求504;
- 5.如果是所有服务所有接口持续报错,则需要优先考虑集群级问题。
第二步,确认:
- 6.单功能问题可根据报错中的
TraceId检查对应 NG 或ctp_webapi_getway网关日志,确认request_time是否显著偏高; - 7.单 pod 问题可确认相关服务多个 pod 中是否存在单个状态异常的实例;
- 8.节点问题则需检查该节点 CPU、内存、磁盘是否正常,并从该节点发起到网关节点、数据库节点的连通性测试,确认是否存在丢包或高延迟。
- 9.网络问题可通过
TraceId核对 NG 日志是否存在对应请求,如果完全查不到日志,通常可支持网络问题判断。 网络导致的请求504 - 10.集群问题则需要综合检查 K8S 面板中大量 pod 状态、集群节点资源、数据库状态,以及 Redis、消息队列、Nacos 等关键中间件是否异常。 核心中间件服务异常
分析工具
常见应急恢复策略
问题确认后再执行对应处置措施。
- 单功能问题通常按正常客户问题单流程处理;
- 单 pod 问题可在 Nacos 中下线异常 pod,临时扩容同类服务 pod,并保留异常 pod 的 GC 日志、业务日志、数据库慢 SQL 日志和 K8S 事件日志,必要时手动生成 dump。
- 节点问题需要第一时间通知客户,保留节点近期命令历史,并尽量将业务 pod 临时扩容到其他节点,同时下线问题节点上的相关 pod。
- 网络问题应明确告知客户,联系客户运维处理。
- 对于集群问题,如果是磁盘空间不足,可优先清理磁盘;
- 如果是数据库状态异常,可考虑重启数据库;
- 其他复杂场景应第一时间联系总部运维和相应架构师协同处理。