直接回答
非恶意的拒绝服务通常源于放大效应和缺乏自我保护的设计:正常的客户端行为在重试、定时任务、递归调用等机制放大下,产生远超系统承受能力的流量或资源消耗。系统不是被攻击打倒的,而是被自己人或自己的设计"压垮"的。
展开解析
典型场景:客户端无退避的重试风暴——服务抖动时千万客户端同步重试,雪崩自我强化;定时任务整点对齐——所有实例的 cron 都设在 0 点,数据库被集中打满;缓存击穿/雪崩——热点 key 同时过期,请求穿透到数据库;昂贵接口无防护——全量导出、深度分页等操作被日常调用耗尽连接池;扇出或循环调用——服务 A 调 B、B 又回调 A,一次请求指数放大;健康检查与自动扩缩容振荡。防御就是把这些写进设计:重试加指数退避和抖动、定时任务随机错峰、缓存随机 TTL 与互斥重建、昂贵接口限流配额、调用链防环、超时与熔断、队列削峰。追问:如何用混沌工程主动暴露这类问题、重试预算怎么定。