Nei Log degli errori ricevo intermittentemente i seguenti messaggi. Questo rende il sito irraggiungibile per 15-30 secondi finché non riprende.
Messaggio di errore Info:
PG::ConnectionBad (FATAL: il sistema del database è in modalità di ripristino) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
Una cosa davvero strana che ho notato esaminando questi log è che sembra cercare la cartella in /var/www/… ma tale cartella non esiste sul server. Dovrebbe esistere? Qualsiasi aiuto è apprezzato.
Se il database è danneggiato, allora il sito è necessariamente compromesso. Devi capire il motivo. Le cause più comuni sono la mancanza di RAM e di spazio su disco. Il mio indovinello è la RAM. Quanta RAM hai? Che output restituisce free -h?
Quello è il percorso all’interno del container. Se esegui ./launcher enter app, lo vedrai lì.
Beh, hai 646M disponibili e 4GB sono sufficienti da sconsigliare l’uso dello swap. Quanto è grande il tuo database? Quale traffico ricevi? Sul server è in esecuzione qualcosa oltre a Discourse?
Nessun altro processo oltre a Discourse è in esecuzione sul server.
Per ottenere la dimensione, ho eseguito:
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
L’output risultante è stato 4650 MB (1 riga).
Per quanto riguarda il traffico:
Ieri abbiamo avuto 1.200 visualizzazioni di pagina, 12.400 nell’ultima settimana. Circa 160 utenti nell’ultima settimana e circa 80 utenti contemporanei in qualsiasi momento.
Sei il massimo. Lo swap da 1 GB sembra aver risolto tutti i problemi di crash. Sono sinceramente contento che fosse un problema di RAM e non del database. Intendo aumentare la quantità di RAM sul server nel weekend. Grazie mille a tutti quelli che hanno contribuito in questa discussione!
Onestamente non sono sicuro. Prima di questo avevamo eseguito una ricostruzione e un riavvio del server dopo aver cambiato l’hardware un po’ di tempo fa. Presumo che dopo un riavvio Discourse abbia rilevato tutte le modifiche al sistema.
Dopo aver installato il file di swap, ci sono stati momenti in cui venivano utilizzati oltre 4 GB di “memoria”, quindi sembra che questo fosse sicuramente il problema durante i nostri periodi di maggior affluenza, che coincidono con gli orari in cui il server si è bloccato. Oggi abbiamo effettuato un aggiornamento e il sito sta funzionando molto bene.
Ma non è così. Ci sono impostazioni che controllano, ad esempio, quanta RAM può utilizzare il database, ed sono incorporate in app.yml. Puoi modificarle manualmente o rieseguire discourse-setup.