Tras descubrir el lanzamiento de 3.3.0-beta1, actualicé inmediatamente mi instancia de Discourse desde la interfaz web.
Sin embargo, durante el proceso de actualización, los registros de la interfaz web se detuvieron durante más de quince minutos sin más salida (¿recuerdo que la última salida fue una serie de elipses crecientes? Puede que lo haya sido, no estoy muy seguro). Aproximadamente 2 horas después, comprobé el estado del servidor desde la plataforma en la nube y sospeché que se había congelado, así que realicé un reinicio suave desde la plataforma en la nube.
Después del reinicio, ejecuté rápidamente una copia de seguridad de Discourse desde la línea de comandos, descargué la copia de seguridad y app.yml localmente, y luego reinstalé completamente Discourse (por supuesto, la última versión). Posteriormente, subí la copia de seguridad e inicié el proceso de restauración desde la línea de comandos.
La restauración fue exitosa, pero ahora mi Discourse presenta graves problemas de rendimiento. Anteriormente, el uso de la CPU durante el uso normal no superaba el 10%, pero ahora se dispara hasta alrededor del 30% incluso durante las horas de menor actividad, y las lecturas del disco también son relativamente altas. Lo que es peor, a veces el servidor se bloquea inexplicablemente, con lecturas de disco que alcanzan alrededor de 1900 por segundo (este es el límite de mi servidor en la nube), y la CPU está por encima del 40% en estado de espera. Las páginas web no se cargan, mostrando tiempos de espera de conexión. Por el momento, estoy ejecutando vmstat y top, pero desafortunadamente, no conservé la salida. Recuerdo que la E/S de intercambio era casi cero, lo que indica puramente lecturas de disco. El número de hilos bloqueados superaba los 100.
Sospecho que esta actualización fallida puede haber causado algún daño, posiblemente a los datos dentro de la copia de seguridad, en lugar del propio software. ¿Hay alguna forma de —eh, no estoy seguro?— actualizar o eliminar alguna caché o realizar operaciones similares? ¿O tal vez… volver a ejecutar la actualización? (Después de todo, las actualizaciones de Discourse son bastante frecuentes y se pueden actualizar casi en cualquier momento).
Como solución temporal, instalé un software de vigilancia para reiniciar automáticamente durante cargas altas. Sin embargo, esto finalmente no es una solución a largo plazo, y no he encontrado problemas similares aquí; evidentemente, no es un problema con el propio software de Discourse. Me pregunto cómo abordar esto.
Si necesita que ejecute algunos comandos en el servidor para comprobar su estado durante cargas altas, no dude en preguntar. Haré todo lo posible para mantener mi conexión SSH y obtener estos datos sin reiniciar.




