Post con lunga durata di esecuzione / errori di timeout

Stiamo gestendo un forum Discourse self-hosted (tff-forum.de) con oltre 4 milioni di post e molti thread di grandi dimensioni.

Dall’ultimo aggiornamento alla versione 3.4.0.beta3 stiamo riscontrando lunghi tempi di esecuzione di 15-20 secondi quando si spostano post da un thread all’altro.

In alcuni casi la funzione termina con un errore e il log mostra il seguente messaggio:

Unicorn worker received USR2 signal indicating it is about to timeout, dumping backtrace for main thread

Prima dell’aggiornamento avevamo solo problemi a spostare post tra thread molto grandi. Ora la funzione a volte termina quando i thread contengono solo pochi post.

Avete qualche consiglio su cosa possiamo controllare per trovare la causa di questo problema? È possibile che abbiamo un problema con il database (mancanza di indici/statistiche)?

Grazie in anticipo per il vostro supporto.

1 Mi Piace

Ci sono stati alcuni commit in beta3 che presentavano problemi di prestazioni. Probabilmente dovresti aggiornare.

Nota: Aggiornamento PostgreSQL 15 complica l’aggiornamento.

1 Mi Piace

Grazie per il consiglio di aggiornare alla versione 3.4.0.beta4. A causa della modifica di PostgreSQL alla versione 15, abbiamo bisogno di una finestra di manutenzione più lunga. Ma ha senso eseguire l’aggiornamento nei prossimi giorni per vedere se questo risolve il nostro problema.

Siamo rimasti un po’ sorpresi dall’aggiornamento di PostgreSQL. Avevamo eseguito l’aggiornamento del nostro sistema di test alla versione 3.4.0.beta3 qualche giorno prima e non avevamo avuto problemi. Quando abbiamo eseguito l’aggiornamento del sistema di produzione, l’aggiornamento del database è stato improvvisamente parte del processo. Non eravamo preparati per questo e abbiamo saltato l’aggiornamento del database. Quindi dobbiamo farlo o insieme alla versione 3.4.0.beta4 o come passaggio separato prima.

È possibile che l’aggiornamento del database saltato causi i nostri problemi di prestazioni? Esiste un modo semplice per verificare se gli indici e le statistiche del database sono corretti?

Probabilmente no.

È possibile eseguire i comandi vacuum e reindex suggeriti nell’argomento di aggiornamento PG in qualsiasi momento.