Firebase Auth偶发Operation too fast错误 无复现步骤寻求同类问题经验
报错原因说明
这个是Firebase Auth服务端返回的速率限制错误,属于平台内置的流量防护机制,没有稳定复现步骤是正常情况,因为Firebase的限流阈值不对外公开,还会根据全局服务负载动态调整,偶发触发通常对应以下几种场景:
- 短时间内出现流量尖峰,瞬间请求量超过了当前账号对应的Auth接口调用阈值
- 批量Auth相关操作没有做分批和间隔控制,比如一次性提交大量用户查询、验证码发送请求
- 自动重试逻辑没有加指数退避规则,失败后立刻重复调用,短时间内生成大量重复请求
- 如果使用的是免费Spark计划,对应的限流阈值更低,偶尔的业务峰值就可能触发限流
修复方案
- 所有Firebase Auth相关的异步调用必须补充错误捕获逻辑,避免未处理的Promise rejection导致进程异常退出,捕获到该错误后按照指数退避规则重试即可,偶发报错重试后基本都能成功
- 有批量操作需求的场景,把任务拆分成每批最多10个请求,每批执行完成后间隔至少1秒再执行下一批,基本可以规避90%以上的偶发限流
- 生产环境高频使用Auth服务的话,建议升级到Blaze付费计划,对应的限流阈值会大幅提升
- 可以在服务侧提前加一层本地限流规则,把超出频率的请求直接拦截,避免触发Firebase侧的限流规则
报错内容中文翻译
(node:1) 未处理的Promise拒绝警告:错误:操作频率过高。 at FirebaseAuthError.FirebaseError [as 构造函数] (/app/node_modules/firebase-admin/lib/utils/error.js:44:28) at FirebaseAuthError.PrefixedFirebaseError [as 构造函数] (/app/node_modules/firebase-admin/lib/utils/error.js:90:28) at new FirebaseAuthError (/app/node_modules/firebase-admin/lib/utils/error.js:149:16) at Function.FirebaseAuthError.fromServerError (/app/node_modules/firebase-admin/lib/utils/error.js:188:16) at /app/node_modules/firebase-admin/lib/auth/auth-api-request.js:1570:49) at processTicksAndRejections (internal/process/task_queues.js:89:5)
内容的提问来源于stack exchange,提问作者Emmanuel Beloin
相关产品推荐
相关产品推荐

