zoukankan      html  css  js  c++  java
  • Laravel API 限速异常 HTTPException Too Many Attemps


    最近线上 Laravel 错误日志发现了一个异常

    HTTPException Too Many Attemps

    而我一个同事在本地开发的过程中也频繁遇到这个异常。测试环境:Laravel 5.5。

    网上查了一下,是 Laravel 5.2 引入的 throttle middleware 造成的。

    源码参考

    https://github.com/illuminate/routing/blob/master/Middleware/ThrottleRequests.php

    public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1)
    

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

    X-RateLimit-Limit:60
    X-RateLimit-Remaining:59
    

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

    X-RateLimit-Limit:60
    X-RateLimit-Remaining:53
    

    等过一分钟,再发送一个请求,都会发现限额已经被自动恢复。

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

    'api' => [
      'throttle:60,1',
      'bindings',
    ]
    

    所以,

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

    将 60 调整成 120 就可以保证本地 debug 不会被频繁限制了。

  • 相关阅读:
    mysql前缀索引的应用
    记博客园
    好的博客网站(随手记)
    memcache应对缓存失效问题
    memcache内存分配问题
    memcached使用libevent 和 多线程模式
    RabbitMQ用户及权限控制
    Nginx基础之常用配置
    PHP-fpm进程池优化方法
    php-fpm参数详解
  • 原文地址:https://www.cnblogs.com/mouseleo/p/8433617.html
Copyright © 2011-2022 走看看