Dopo aver scoperto il rilascio di 3.3.0-beta1, ho immediatamente aggiornato la mia istanza Discourse dall’interfaccia web.
Tuttavia, durante il processo di aggiornamento, i log dell’interfaccia web si sono bloccati per più di quindici minuti senza ulteriori output (ricordo che l’ultimo output fosse una serie di ellissi crescenti? Potrebbe essere stato così, sono un po’ incerto). Circa 2 ore dopo, ho controllato lo stato del server dalla piattaforma cloud e ho sospettato che si fosse bloccato, quindi ho eseguito un riavvio soft dalla piattaforma cloud.
Dopo il riavvio, ho prontamente eseguito un backup di Discourse dalla riga di comando, scaricato localmente il backup e app.yml, e poi ho reinstallato completamente Discourse (ovviamente, l’ultima versione). Successivamente, ho caricato il backup e avviato il processo di ripristino dalla riga di comando.
Il ripristino è andato a buon fine, ma ora il mio Discourse sta riscontrando gravi problemi di prestazioni. In precedenza, l’utilizzo della CPU durante l’uso normale non superava il 10%, ma ora raggiunge picchi intorno al 30% anche durante le ore non di punta, e anche le letture del disco sono relativamente elevate. Peggio ancora, a volte il server si blocca inspiegabilmente, con letture del disco che raggiungono circa 1900 al secondo (questo è il limite del mio server cloud), e la CPU è oltre il 40% in stato di attesa. Le pagine web non riescono a caricarsi, mostrando timeout di connessione. Al momento, sto eseguendo vmstat e top, ma sfortunatamente non ho conservato l’output. Ricordo che lo swap IO era quasi zero, indicando puramente letture del disco. Il numero di thread bloccati superava i 100.
Sospetto che questo aggiornamento fallito possa aver causato alcuni danni, possibilmente ai dati all’interno del backup, piuttosto che al software stesso. C’è un modo per—uh, non sono sicuro?—aggiornare o eliminare qualche cache o operazioni simili? O forse… eseguire nuovamente l’aggiornamento? (Dopotutto, gli aggiornamenti di Discourse sono piuttosto frequenti e possono essere aggiornati quasi in qualsiasi momento.)
Come soluzione temporanea, ho installato un watchdog software per riavviare automaticamente durante i carichi elevati. Tuttavia, questa non è in definitiva una soluzione a lungo termine, e non ho trovato problemi simili qui; evidentemente, non è un problema con il software Discourse stesso. Mi chiedo come affrontare questo problema.
Se hai bisogno che esegua alcuni comandi sul server per verificarne lo stato durante i carichi elevati, non esitare a chiedere. Farò del mio meglio per mantenere la mia connessione SSH e ottenere questi dati senza riavviare.




