完整题目
在智能Agent系统中,任务执行失败后的重试机制通常设置最大重试次数。请说明该参数设定的主要依据,需综合考虑哪些关键因素(如系统稳定性、响应延迟、资源消耗等),并阐述如何在保障系统可靠性的同时有效平衡性能开销与容错能力。
本文目录
最大次数是预算结果,不是业务等级常量
先定义端到端截止时间、单次超时、可重试错误、调用成本、并发上限和下游恢复特性,再推导最多还能尝试几次。支付或订单“重要”不意味着固定重试 3–5 次;非幂等写入、结果未知或明确拒绝时,盲重试反而扩大损失。
先分类结果
- 通常不重试:参数/权限/配额合同错误,确定性的业务拒绝,以及调用方已取消且结果无价值的任务。
- 按服务合同重试:连接未建立、明确临时故障、部分 5xx 或限流;遵守
Retry-After,并确认请求仍在截止时间内。 - 结果未知:请求可能已执行但响应丢失。先用同一个幂等键查询或重放,或通过任务/支付状态对账;不能换新键再次创建副作用。
幂等键必须绑定同一用户、操作类型和规范化参数,服务端原子保存处理中与终态结果,并定义保留期。幂等不能只靠前端禁用按钮。
超时、退避和预算
单次超时由端到端截止时间、连接阶段、下游延迟分布和可接受的误超时率共同确定;“重试间隔大于 2×P99”没有通用依据。使用带随机抖动的退避,限制每个请求和全局重试预算。同步请求中一旦剩余时间不足以完成下一次尝试,就立即返回可恢复状态。
只在一层负责主动重试。若客户端、网关、服务和SDK各重试三次,最坏请求量会发生重试倍增。其余层传播明确的错误和剩余截止时间。熔断或降级阈值根据时间窗口、最小样本量、错误类型与恢复探测设定,固定“失败率 50%”无法适配不同流量。