429 zu viele Anfragen

Hallo zusammen, ich weiß, dass es bereits Themen zu „zu viele Anfragen" gibt, aber dieses scheint nicht ganz ins Bild zu passen.

Ich bekomme intermittierende 429-Fehler in Discourse (und generell läuft alles ziemlich langsam) mit folgendem Stacktrace:

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)

Es ist immer dieser .js-Link, ein ziemlich beeindruckender Block an JS-Code, der für mich wenig aussagt. Die Instanz, auf der Discourse läuft, scheint minimal belastet zu sein – 10 % CPU-Auslastung, alles andere wirkt ebenfalls völlig normal. Daher ist es für mich etwas verwirrend, dass ich trotzdem 429-Fehler bekomme.

Gibt es Einstellungen, die ich irgendwo hochsetzen kann, um das globale Rate Limiting zu ändern? Die Instanz scheint deutlich mehr Last bewältigen zu können, als Discourse annimmt, oder mir entgeht etwas Größeres, das durch ein Plugin oder einen Bug verursacht wird.

Danke!

2 „Gefällt mir“

Is your site behind a reverse proxy or anything else that would mess with real incoming IP addresses?

1 „Gefällt mir“

No, I don’t believe so (and the logs capture IP addresses normally) but it does sit behind an ELB. It definitely did correlate with a significant increase in traffic (looks kind of like a DDOS attack or something)
image

But if my understanding of rate limiting is correct, that shouldn’t have affected every user— Only the user trying to visit a million times, right?

I’ll verify re: the network architecture. Thanks!

I believe the nginx inside the Discourse container is using the ELB IP for the rate limiting bucket instead of the original client IP.

1 „Gefällt mir“

That sounds quite possible. Just verified that we do have an ELB setup in aws with nothing particularly special about it— Is is the result of something that I have misconfigured on my end?

Not 100% sure what next steps would be. If you point me in the right direction, I can probably work with my ops team to figure it out. Thanks much!

1 „Gefällt mir“