Numerosi errori HTTP 502 e 429 dopo l'aggiornamento a 3.4.0.beta1-dev

Versione di Discourse: 3.4.0.beta1-dev (bf3d8a0a94)

Aggiornato ieri e ho dovuto disabilitare la minificazione da Cloudflare come suggerito qui:

Tuttavia, da allora, molti utenti (incluso me) hanno riscontrato diverse istanze di 502 (Bad Gateway) e 529 (Too Many Requests).

Nel tentativo di alleviare il problema, ho seguito anche questa guida:

Tuttavia, non sembra essere cambiato nulla in termini di frequenza di questi errori.

L’aggiornamento è avvenuto ieri intorno alle 11:00. Ho eseguito una ricostruzione completa perché volevo anche disabilitare un plugin.

Ho un’istanza Prometheus+Grafana che monitora il server e discourse, ma il server sembra a posto in termini di caricamento:

Metriche di Discourse (il calo delle metriche intorno alle 11:00 di ieri è la ricostruzione che ha abbassato il container):

Di nuovo, non vedo alcun schema strano.

Tuttavia, questa è la console del browser di un minuto fa, dopo aver tentato di inviare un PM a un utente:

Se c’è qualcos’altro che posso fornire (log di qualsiasi tipo), per favore chiedete. Grazie.

Oh, se può essere d’aiuto, anche molte operazioni “in background” in tempo reale sono chiaramente in ritardo.

Ad esempio, gli argomenti già letti non vengono registrati come letti.

Solo per essere sicuri, hai eseguito anche questo passaggio, quindi hai ricompilato, corretto?

1 Mi Piace

Sì, scusa, ho dimenticato di aggiungere che avevo già aggiunto il template Cloudflare al file app.yml molto tempo fa. Siamo sempre stati dietro Cloudflare, fin dal primo giorno.

Questa è una parte di app.yml, abbiamo i nostri certificati rinnovati in modo indipendente, motivo per cui quello di letsencrypt è commentato:

## questo è il template del container Docker Discourse standalone all-in-one
##
## Dopo aver apportato modifiche a questo file, DEVI ricostruire
## /var/discourse/launcher rebuild app
##
## FAI *MOLTA* ATTENZIONE QUANDO MODIFICHI!
## I FILE YAML SONO SUPER SUPER SENSIBILI A ERRORI DI SPAZIATURA O ALLINEAMENTO!
## visita http://www.yamllint.com/ per validare questo file secondo necessità

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Decommenta queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
#  - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

## quali porte TCP/IP dovrebbe esporre questo container?
## Se desideri che Discourse condivida una porta con un altro webserver come Apache o nginx,
## vedi https://meta.discourse.org/t/17247 per i dettagli
expose:
  - "80:80"   # http
  - "443:443" # https

[...]

Estratto di /logs

Vedo che questo è stato spostato in Installation, giusto per essere chiari, questa non è una nuova installazione.

Questa istanza di discourse è in funzione da marzo 2023 e non ha mai avuto questo specifico problema.

C’è stato un problema in passato con alcuni 529 ma è stato da allora risolto.

Penso che si adatti ancora a

4 Mi Piace

Sembra che il tuo PostgreSQL sia sovraccarico. Sembra che la maggior parte della tua RAM sia inattiva, proverei a ottimizzare il DB per utilizzarla e vedrei come vanno le cose dopo.

1 Mi Piace

Come si presenta /sidekiq/queues?
Da quale versione stavi aggiornando?

1 Mi Piace

Dall’ultima versione stabile del 6 maggio, v3.2.1 all’ultima test-passed.

Code di Sidekiq:

La sezione Lavoro morto (Dead job) è questa, ma sembra essere lo stesso lavoro fin dall’inizio dei tempi.

Voci più vecchie:

Quelli in coda di ritentativo (retry) sembrano essere lo stesso lavoro che viene ritentato più e più volte.

Ma… perché improvvisamente? Dopo un semplice aggiornamento dello strato applicativo?

Sto usando il plugin discourse prometheus exporter.
Se aggiungessi un exporter postgresql come un altro container sulla VM, sarebbe possibile consentirgli di accedere alle metriche sull’installazione postgresql di discourse?

Ci sono indicazioni più precise su come ottimizzare il database per discourse?

Non sono sicuro se sia correlato, ma sicuramente ha iniziato ad accadere dopo l’aggiornamento, fare clic sul pulsante di chiusura nella scheda non letti restituisce sempre un 503.

Beh, dato che sembra non ci sia una soluzione, proverò a tornare all’ultima versione stable dato che dovrebbe essere… sai, stabile.

Incrocio le dita affinché non ci sia una dipendenza principale che interrompa il processo di build, come l’ultima volta.

Non puoi tornare da test-passati a stabile, a meno che non sia disponibile una versione stabile superiore. Quindi la prossima opportunità per te è quando uscirà la 3.4.0, immagino che sarà intorno o dopo Natale…

Inoltre, prima o poi dovrai affrontare la situazione.

1 Mi Piace

Beh, l’ho appena fatto. Sembra funzionare. Comunque non ci interessano nessuna delle funzionalità di 3.3.0.

Vedrò se ci sono ancora problemi. Il peggio che possa succedere è che continuiamo a ricevere una pletora di 429 e 502, non un grande cambiamento.

Apprezzerei indicazioni su come configurare Postgres su Discourse in modo che abbia più risorse disponibili, tuttavia.

Modifica: versione 3.2.5 distribuita. Il sistema sembra stabile.

Per favore, ricordacelo quando pubblicherai il tuo prossimo problema :wink:

1 Mi Piace

Menziono sempre la versione in cui mi trovo quando segnalo un problema.
Penso sia importante ricordare che proprio perché questo è presentato come software open source, i problemi critici dovrebbero essere presi in considerazione invece di scrivere cose come questa:

Questo è un altro esempio di persone che si sforzano di passare alla versione “stabile” incontrando alcuni bug che cadono tra le maglie perché non è la versione distribuita più popolare.

Quando stable dovrebbe significare “stabile”, non “obsoleto”.
Il fatto che dipendenze fondamentali come discourse docker vengano distribuite senza un sistema di tag dovrebbe essere sufficiente per essere un po’ più umili quando si risponde agli utenti che segnalano un problema.

Stavo parlando di menzionare il fatto che sei retrocesso quando tecnicamente non potevi.

Penso sia importante ricordare… che non lavoro per Discourse e ti sto aiutando nel mio tempo libero, quindi non apprezzo il tuo tono, né sono in grado di fare nulla con il tuo feedback.

2 Mi Piace

2 Mi Piace