Laravel api 访问频率限制 429 Too many requests

近在做API压力测试,经常会出现 429 Too many requests,项目用的是laravel 5.5 。
刚开始以为是网关(用的是kong网关)的限制,查了半天也没有相应的文档。
无意中用chrome 查看了http状态,才发现是laravel的限制:

http header信息:

 
  1. Response Headers
  2. Cache-Control: no-cache, private
  3. Connection: keep-alive
  4. Content-Type: text/html; charset=UTF-8
  5. Date: Thu, 15 Nov 2018 01:49:31 GMT
  6. Server: Tengine/2.1.2
  7. Transfer-Encoding: chunked
  8. Via: kong/0.14.1
  9. X-Kong-Proxy-Latency: 0
  10. X-Kong-Upstream-Latency: 25
  11. X-Powered-By: PHP/7.0.9
  12. X-RateLimit-Limit: 60
  13. X-RateLimit-Remaining: 59

其表现是在 HTTP 的 Response 头中缀上了请求次数统计

 
  1. X-RateLimit-Limit:60
  2. X-RateLimit-Remaining:59

从 Chrome 的 console 看,每个 API 请求都会占用这个 limit 的限额。

 
  1. X-RateLimit-Limit:60
  2. X-RateLimit-Remaining:53

等过一分钟(文档上是一分钟,实际没多长时间),再发送一个请求,都会发现限额已经被自动恢复。

对应的配置在 Laravel 项目文件 app/Http/Kernel.php

 
  1. 'api' => [
  2. 'throttle:60,1',
  3. 'bindings',
  4. ]

所以,

  1. 第一个参数 60 代表每分钟限制 60 次请求
  2. 第二个参数 1 代表触发了限制规则,则1分钟内禁止访问

将 60 调整成 10000 基本就可以保障访问的需求了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值