Recientemente actualicé Discourse de la versión 3.4.0.beta1 a la 3.4.0.beta3. Después de la actualización, notamos que el uso de memoria del foro aumenta gradualmente, lo que provoca la caída de la aplicación. Al revisar el servidor, podemos ver que redis-server está consumiendo el 95% de la memoria.
Estamos ejecutando redis-cli flushall diariamente para solucionar temporalmente el problema. La instancia de Discourse está alojada en Docker.
Intenté degradar a la versión anterior, pero arrojó algunos errores durante la reconstrucción.
Una cosa más es que en /sidekiq/scheduler/history encuentro que Jobs::Chat::EmailNotifications todavía se está ejecutando durante un período prolongado.
Como solución temporal, creé un pequeño script de bash para limpiar la memoria de Redis y lo programé para que se ejecute todos los días a las 6 AM usando un cron job.
Nota: Estoy guardando el registro en /home/ubuntu/logs. Puedes ignorarlo si no lo necesitas.
#!/bin/bash
# Establecer directorio y nombre de archivo de registro
LOG_DIR="/home/ubuntu/logs"
LOG_FILE="$LOG_DIR/redis.cleanup.$(date +\%Y-\%m-\%d).log"
# Asegurarse de que el directorio de registro exista
mkdir -p "$LOG_DIR"
# Registrar información sobre el entorno actual (lado del host)
echo "Ejecutando script en $(date)" >> "$LOG_FILE"
# Ejecutar el lanzador de discourse en la aplicación y guardar la salida en el archivo de registro (lado del host)
echo "comando de limpieza de redis" >> "$LOG_FILE"
docker exec app redis-cli flushall >> "$LOG_FILE" 2>&1
# Indicar que el script se completó (lado del host) y salir
echo "Script completado exitosamente en $(date)" >> "$LOG_FILE"
exit 0
Actualización: Parece que se ha corregido automáticamente. Ahora que lo recuerdo, tuvimos un problema similar la última vez que actualizamos la versión, y la memoria seguía aumentando, pero se arregló sola después de un tiempo. Parece que es un error.