429 请求过多

大家好,我知道之前有很多关于“请求过多”的帖子,但这个情况似乎不完全符合。

我在 Discourse 中遇到了间歇性的 429 错误(而且整体速度也相当慢),错误回溯如下:

Error: Too Many Requests
    at s (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:9:9188)
    at a (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:9:9045)
    at o (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:9:8936)
    at Object.trigger (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:18:7223)
    at https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:18:9212
    at t.invoke (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:9729)
    at e.t.flush (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:8732)
    at e.t.flush (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:10782)
    at e.n._end (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:15440)
    at e.n.end (https://discourse.looker.com/assets/ember_jquery-d430881a3fb1403871256e5a02423c4b20a78793685e92088613ca9a701baf88.js:16:12110)

总是指向那个 .js 链接,这是一段非常庞大的 JS 代码,对我来说没什么实际意义。运行 Discourse 的实例似乎负载很低——CPU 使用率仅为 10%,其他一切看起来也都很正常,所以我有点困惑为什么会出现 429 错误。

是否有我可以调整的设置来更改全局速率限制?该实例能够处理的负载远大于 Discourse 似乎认为的,或者我是否忽略了由插件或 Bug 引起的更严重的问题。

谢谢!

您的网站是否位于反向代理或其他可能干扰真实入站 IP 地址的设备之后?

不,我不这么认为(日志通常会记录 IP 地址),但它确实位于 ELB 之后。这确实与流量显著增加有关(看起来有点像 DDoS 攻击之类的)

但如果我对速率限制的理解正确,这不应该影响所有用户——应该只影响试图访问百万次的用户,对吧?

我会核实一下网络架构。谢谢!

我认为 Discourse 容器内的 nginx 在速率限制桶中使用的是 ELB IP,而不是原始客户端 IP。

这听起来完全有可能。我刚确认我们在 AWS 上确实配置了一个 ELB,而且并没有任何特别之处——这是否是由于我在某处配置错误导致的?

我还不太确定下一步该怎么做。如果您能给我指个方向,我大概可以和我运维团队一起排查解决。非常感谢!