Da ieri sera il sito risponde molto lentamente

Scusate in anticipo se questa è la categoria sbagliata, la posizione errata, ecc.

Ho un sito Discourse in esecuzione da circa 6 mesi tramite un VPS di DigitalOcean, senza molti problemi. La pagina di amministrazione indica che sono sulla versione 2.5.0.beta4. Da ieri sera, la maggior parte dei contenuti delle pagine del sito o non riesce a caricarsi o richiede un tempo apparentemente eccessivo. Ad esempio, riesco a navigare verso pagine come la home page o /admin, ma qualsiasi contenuto effettivo di queste (post, grafici di amministrazione o altre schede) non sembra caricarsi. Ho controllato le risorse di sistema: l’utilizzo della CPU si attesta intorno al 2% quando è inattivo, e c’è un traffico minimo o un uso del disco trascurabile. La base utenti è di circa 10 persone, dato che sto solo provando a impostare il sito. Considerato ciò, questo comportamento sembra molto strano.

Gli unici plugin che ho, secondo app.yml, sono docker_manager e discourse-signatures. Sono l’unico utente amministratore, quindi posso confermare che non sono state apportate modifiche alle impostazioni del sito da molto tempo.

Il mio primo pensiero è stato riavviare la macchina stessa, e ho anche provato ad aggiornare manualmente usando git pull e ./launcher rebuild app. Non sono sicuro di cosa cercare durante quel processo per capire se si verificano errori, ma il rebuild sembra completarsi e il sito diventa nuovamente accessibile, rimanendo però alla versione 2.5.0.beta4. Allo stesso modo, provare ad accedere alla pagina /admin/update alla fine porta solo a un timeout. Tutto questo sembra piuttosto strano perché il sito è tecnicamente ‘funzionante’ — semplicemente non conosco abbastanza il suo funzionamento per diagnosticare realmente qualcosa. Ho trovato e posso eseguire discourse-doctor, ma non sono sicuro di cosa accomplisca — mi invia email con successo, ecc.

L’unica cosa che potrebbe indicare un problema è che, ieri sera, ho ricevuto un’email dal forum riguardo a una risposta a un post, e quando navigo verso la categoria ‘ultimi post’ (dopo che finalmente si carica), non sembra esserci alcuna indicazione che il post esista, perché la panoramica del thread in ‘ultimi’ non lo elenca come postato da quell’utente. Non riesco a caricare il contenuto di nessun post, quindi non c’è modo di verificare con certezza. Quindi potrebbe esserci qualche errore o discrepanza nel database? Non sono sicuro di come una cosa del genere possa propagarsi fino a causare il fallimento del caricamento di interi blocchi del sito, o se valga la pena inseguire questa pista.

Qualsiasi idea su da dove iniziare con il troubleshooting per un problema del genere? Grazie mille se avete dedicato del tempo a leggere : )

Ciao tuckie! Benvenuto!

Sembra che tu stia facendo tutto correttamente.

Ti consiglio vivamente di aggiornare, se possibile: sei piuttosto indietro rispetto all’ultima versione. Ma assicurati di scaricare prima un backup per non perdere nulla.

Puoi accedere via SSH e verificare se la memoria è esaurita?

df -h

In ogni caso, la memoria è il primo aspetto da controllare, e questo comando è utile per rimuovere eventuali container obsoleti che occupano spazio:

./launcher cleanup app

Poi prova a ricostruire l’app all’ultima versione. Fammi sapere se questa volta funziona e non vengono visualizzati errori nella console.

./launcher rebuild app

Grazie per la rapida risposta.
Mostra circa 7,9 GB liberi nell’unità montata su /dev/vda1, che è montata su /. Non sono molto informato su come vengono utilizzate le altre partizioni su Ubuntu o su come potrebbero influire sul funzionamento (Discourse è in un container, giusto?). Le altre sembrano essere la partizione di avvio, ecc. Ci sono solo circa 30-40 post totali sul forum, dato che lo sto testando, quindi non sembra essere a rischio da quel punto di vista. La pulizia è riuscita a liberare circa 4 GB aggiuntivi.

Per quanto riguarda la ricostruzione dell’app, l’ho eseguita diverse volte. Non vedo messaggi di avviso evidenti durante il processo, ma allo stesso tempo, al termine, non vedo nulla che indichi ‘successo’. Non saprei quali righe di errore o avviso cercare. Rimuove il vecchio container, esegue il container Docker e poi termina. L’ho appena eseguita un’altra volta e, quando mi connetto al sito, mi dice che sono ancora disponibili aggiornamenti, ma ci vuole un tempo incredibilmente lungo per riportare la versione su cui mi trovo (2.5.0.beta4) e la versione a cui aggiornare.

Una parte del problema è che sembra non poter utilizzare gli strumenti di amministrazione a causa dei tempi di risposta o del mancato caricamento. Ad esempio, navigando nella scheda dei backup viene visualizzata all’infinito l’animazione di caricamento. Per curiosità, ho aperto la console nella scheda dei backup e il browser sembra tentare di recuperare i file JavaScript, fallendo su tutti, uno alla volta e lentamente.

Se esiste un modo per lavorare con i backup tramite SSH, sembra che potrebbe essere utile in questo caso.

Sembra un problema di rete. Stai usando Cloudflare? (in tal caso, disattiva la nuvola arancione).

Potresti avere un “vicino rumoroso” su DigitalOcean, quindi potresti aprire un ticket con loro.

Non ha alcun senso che tu dica di aver eseguito una ricostruzione ma che la versione non sia cambiata. Penso che dovresti eseguire l’aggiornamento a PostgreSQL 12. Non hai visto nulla a riguardo durante la ricostruzione?

Sono su DigitalOcean; suppongo che qualcosa del genere possa accadere, anche se non sono sicuro che possa causare questo problema in modo così costante o per un periodo così lungo. Penso che il modo migliore per descrivere il problema con il sito sia dire che sembra che la pagina riesca solitamente a caricare il modello o lo ‘scheletro’ della pagina, ma oltre a ciò, il recupero di qualsiasi contenuto effettivo per le pagine sembra rimanere in caricamento all’infinito.

Per quanto riguarda la ricostruzione/cambio di versione, potrebbe essere che si verifichi un errore del genere, ma non conosco un buon metodo per analizzarlo, né so davvero cosa dovrei cercare. Ho visto una riga del tipo ‘postgres installato’ mentre osservavo l’output scorrere mentre eseguivo di nuovo la ricostruzione. Non sono sicuro se ciò sia dovuto al lavoro che avviene all’interno di un container o meno, ma ad esempio ./launcher rebuild app | grep 'postgres' non sembra filtrare nulla, così come ./launcher rebuild app > output.txt && grep 'postgres' output.txt. Il file output.txt contiene delle informazioni, ma apparentemente non tutto? Almeno non termina nello stesso modo dell’output effettivo della console.

Ciao, spero di non violare alcuna regola sui bump o simili, ma vorrei comunque un aiuto con questo problema. Qualche volta la settimana scorsa le cose sembrano essersi aggravate? Non posso dire con certezza quando sia successo, dato che non ho lavorato a questo durante le festività della settimana scorsa, ma ora non riesco affatto a connettermi al mio sito. Riesco ancora a fare il ping all’IP con successo, e lo stesso IP punta al dominio corretto, quindi sembra che non sia un problema di nameserver.

Ora, accedendo al sito da Firefox ottengo:

Il sito all'indirizzo https://aregames.art/ ha riscontrato una violazione del protocollo di rete che non può essere riparata.

La pagina che stai cercando di visualizzare non può essere mostrata perché è stato rilevato un errore nella trasmissione dei dati.

Non riesco a trovare molte informazioni utili dall’ispettore del browser, perché sembra che non ci sia alcuna risposta alla richiesta GET.

Da quando ho scoperto questo nuovo problema, ho:

  • eseguito più volte il rebuild
  • aggiornato Ubuntu alla versione 20.04
  • eseguito nuovamente il rebuild

Il sito stesso è stato utilizzato principalmente per testare la piattaforma per circa un mese, e sono disposto ad accettare che probabilmente non sia stata un’ottima idea non tenere il software aggiornato. Sono anche disposto a reinstallare Discourse da zero. Sarebbe comunque bello trovare un modo per risolvere il problema preservando la configurazione del sito, gli utenti e i post, ma l’unica cosa che devo assolutamente salvare è parte del CSS personalizzato che ho scritto nell’editor dei temi. Se esiste un posto dove è memorizzato e da cui posso copiarlo in una nuova configurazione, sarebbe molto utile. Io (in modo irresponsabile) non ho una versione aggiornata archiviata localmente da nessuna parte..

E ancora, riguardo al processo di rebuild, non so ancora esattamente come interpretarlo per individuare eventuali problemi. Per quanto riesco a vedere, viene eseguito e completato senza richiedere alcun input, e le ultime righe dopo il completamento riguardano l’avvio del contenitore Docker con le configurazioni presenti nel file YAML. So che c’è una differenza tra il completamento del rebuild e il completamento con successo, ma non sono sicuro di cosa cercare o dove diagnosticare se qualcosa va storto durante questo processo.

Il server è attivo? Puoi fare SSH su di esso?

Se sì, riavvia il server e poi ricostruisci Discourse.

Se dopo tutto questo non è attivo, incolla qui l’output della ricostruzione e possiamo aiutarti.

Sì, riesco a fare ssh correttamente ed è così che ho eseguito il rebuild ogni volta. E no, dopo un rebuild è ancora irraggiungibile. Vedo (anche dopo un rebuild) che ifconfig mostra il container docker con un IP diverso da quello del server, che non riesco a raggiungere dal browser web del mio sistema. Non sono sicuro se sia intenzionale o meno. ./launcher rebuild app > output.txt sembra produrre solo una parte dell’output effettivo della console, ma posso includerlo anch’esso.

Ubuntu Pastebin (file di output breve)
Ubuntu Pastebin (output completo incollato dal terminale)
Vedo alcuni messaggi di errore da postgres che indicano che il database ‘discourse’ esiste già; vale la pena indagare?

Il tuo DNS è corretto?

host aregames.art 
aregames.art ha indirizzo 198.54.117.200
aregames.art ha indirizzo 198.54.117.199
aregames.art ha indirizzo 198.54.117.198
aregames.art ha indirizzo 198.54.117.197

Perché ci sono così tanti indirizzi IP? Qual è l’indirizzo IP del tuo server?

Wow, è stato davvero illuminante: in realtà avevo lasciato scadere il nome del mio dominio e, per coincidenza, è successo proprio il giorno in cui ho iniziato ad avere questi problemi… Avevo intenzione di cambiare provider, quindi ho disattivato i pagamenti automatici e la data è passata inosservata, immagino. Sembra quindi che quegli indirizzi IP siano collegati a un qualche servizio di parcheggio per il dominio. L’ho appena rinnovato, quindi forse applicherà nuovamente le registrazioni corrette; non so quanto tempo ci metta di solito, ma l’host continua a segnalare quegli IP. Secondo la documentazione, non dovrei essere in grado di connettermi direttamente tramite l’IP, quindi suppongo che non potrò verificare se questo abbia funzionato per un po’. Grazie per avermelo fatto notare.

Detto questo, sono ancora un po’ confuso riguardo ai problemi che stavo affrontando inizialmente: stavo accedendo a una versione cache della pagina e, a causa dei problemi con i server DNS, le richieste per i contenuti non venivano evase? Alcune cose, persino i post in un thread o l’elenco dei post quando si apre ‘ultimi post’, alla fine venivano caricate, ma dopo molto tempo.

Aggiornamento: host aregames.art, come hai menzionato sopra, sembra risolvere di nuovo all’indirizzo IP e al server di posta corretti. Ho potuto confermare con lo script di configurazione di Discourse che accetta il DNS come diretto all’IP. Sembra che lo script di configurazione abbia anche eseguito il rebuild. Tuttavia, navigando all’URL si riceve un errore “server non trovato”. Accedendo direttamente all’IP sulla porta 443 si ottiene un errore nginx 400 Bad Request, il che sembra un certo progresso.

Ancora un’ultima modifica: ho dovuto svuotare la cache del browser: il sito si è caricato perfettamente da una scheda in incognito. Le cose sembrano di nuovo funzionanti! Immagino… pagare per il mio sito sia stata la soluzione per risolvere il problema qui.

Sì, stavi visualizzando la versione in cache.

Abbiamo aggiunto una nuova funzionalità in Discourse 2.6 per assegnare una classe CSS specifica al documento quando ti trovi in questa visualizzazione, ma al momento non disponiamo ancora di un elemento dell’interfaccia predefinito per essa.

Puoi leggere ulteriori informazioni all’indirizzo Offline Indicator