Cognito认证触发TooManyRequestsException错误?性能测试如何解决?
Cognito限流导致性能测试登录失败解决方案
1 临时调整Cognito服务配额
- AWS Cognito用户池的认证类请求(登录、令牌申领等)默认软配额为120次/秒,你可以直接在AWS控制台「服务配额」模块提交配额提升申请,注明是性能测试专用,通常1-2个工作日即可获批,测试完成后可调回原有配额避免不必要的成本和风险。
- 如果测试场景涉及托管UI、第三方身份提供商登录,需同步检查对应关联接口的配额,避免其他环节触发限流。
2 优化JMeter测试逻辑
- 新增重试机制:在JMeter中添加重试控制器,对返回
TooManyRequestsException的请求配置指数退避重试,重试间隔从100ms逐步递增至2s,最大重试3次,抵消瞬时流量峰值带来的限流影响。 - 错峰发起登录:若测试核心要求是10000用户同时在线执行业务操作,而非10000用户同时登录,可将JMeter线程组设置20-30s的启动爬升期,把登录请求均匀分散,避免集中请求打满Cognito阈值。
- 预生成认证令牌:若测试目标是验证API、Lambda、Dynamo的性能,而非Cognito本身的承载能力,可提前批量生成10000份有效的Cognito访问令牌,测试时直接携带令牌调用业务接口,完全绕开登录环节的Cognito限流。
3 测试环境特殊适配
- 测试环境可临时关闭Cognito的防暴力破解等速率限制规则,测试完成后必须立即恢复原有安全配置,避免留下安全漏洞。
- 纯业务链路压测场景下,可临时将认证逻辑替换为本地模拟返回合法令牌,完全不调用真实Cognito服务,彻底规避限流问题。
提示:所有针对测试环境的临时配置调整,测试结束后都要逐一核对恢复,避免遗漏配置导致后续安全风险。
内容的提问来源于stack exchange,提问作者Jackie
相关产品推荐
相关产品推荐

