Após descobrir o lançamento do 3.3.0-beta1, atualizei imediatamente minha instância do Discourse pela interface web.
No entanto, durante o processo de atualização, os logs da interface web pararam por mais de quinze minutos sem mais saídas (lembro-me que a última saída foi uma série de reticências crescentes? Talvez tenha sido, estou um pouco incerto). Cerca de 2 horas depois, verifiquei o status do servidor na plataforma de nuvem e suspeitei que ele havia travado, então realizei uma reinicialização suave pela plataforma de nuvem.
Após a reinicialização, executei prontamente um backup do Discourse pela linha de comando, baixei o backup e o app.yml localmente, e então reinstalei completamente o Discourse (claro, a versão mais recente). Depois disso, fiz o upload do backup e iniciei o processo de restauração pela linha de comando.
A restauração foi bem-sucedida, mas agora meu Discourse está enfrentando sérios problemas de desempenho. Anteriormente, o uso da CPU durante o uso normal não excedia 10%, mas agora atinge picos de cerca de 30% mesmo em horários de menor movimento, e as leituras de disco também estão relativamente altas. Pior ainda, às vezes o servidor trava inexplicavelmente, com leituras de disco atingindo cerca de 1900 por segundo (este é o limite do meu servidor de nuvem), e a CPU em mais de 40% em estado de espera. As páginas da web falham ao carregar, mostrando timeouts de conexão. No momento, estou executando vmstat e top, mas infelizmente, não guardei a saída. Lembro-me que o IO de swap era quase zero, indicando puramente leituras de disco. O número de threads bloqueadas excedeu 100.
Suspeito que esta atualização falha pode ter causado algum dano, possivelmente aos dados dentro do backup, em vez do próprio software. Existe alguma maneira de — uh, não tenho certeza? — atualizar ou excluir algum cache ou operações semelhantes? Ou talvez… executar a atualização novamente? (Afinal, as atualizações do Discourse são bastante frequentes e podem ser atualizadas quase a qualquer momento.)
Como uma solução temporária, instalei um software de watchdog para reiniciar automaticamente durante cargas altas. No entanto, esta não é uma solução de longo prazo e não encontrei problemas semelhantes aqui; evidentemente, não é um problema com o próprio software Discourse. Estou me perguntando como resolver isso.
Se você precisar que eu execute alguns comandos no servidor para verificar seu status durante cargas altas, sinta-se à vontade para perguntar. Farei o meu melhor para manter minha conexão SSH e obter esses dados sem reiniciar.




