429 troppe richieste

Ciao a tutti, so che ci sono già argomenti sui “too many requests”, ma questo sembra non rientrare esattamente in quella categoria.

Sto ricevendo errori 429 intermittenti su Discourse (e tutto è piuttosto lento in generale) con questo backtrace:

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)

È sempre quel link .js, un blocco di JS piuttosto imponente che per me non significa granché. L’istanza che esegue Discourse sembra essere sotto un carico minimo: il 10% della CPU, tutto il resto sembra piuttosto normale, quindi è un po’ confuso per me ricevere errori 429.

Ci sono impostazioni che posso aumentare da qualche parte per modificare il limite di velocità globale? L’istanza può gestire molto più carico di quanto Discourse sembri pensare, oppure mi sto perdendo qualcosa di più grande causato da un plugin o da un bug.

Grazie!

Il tuo sito si trova dietro un reverse proxy o qualcosa che potrebbe alterare gli indirizzi IP reali in arrivo?

No, non credo (e i log catturano normalmente gli indirizzi IP), ma è posizionato dietro un ELB. Di certo ha coinciso con un aumento significativo del traffico (sembra un po’ un attacco DDoS o qualcosa di simile)

Ma se la mia comprensione del rate limiting è corretta, non avrebbe dovuto influenzare tutti gli utenti— solo l’utente che ha cercato di visitare un milione di volte, giusto?

Verificherò riguardo all’architettura di rete. Grazie!

Credo che nginx all’interno del contenitore Discourse stia utilizzando l’indirizzo IP dell’ELB per il bucket di limitazione della frequenza, anziché l’indirizzo IP originale del client.

Sembra abbastanza plausibile. Ho appena verificato che abbiamo un setup ELB su AWS senza nulla di particolarmente speciale. È il risultato di qualcosa che ho configurato male dalla mia parte?

Non sono sicuro al 100% di quali siano i prossimi passi. Se mi indichi la direzione giusta, probabilmente potrò lavorare con il mio team delle operazioni per risolverlo. Grazie mille!