La memoria de Redis sigue aumentando en Discourse 3.4.0.beta3

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.

¿Puedo saber cómo solucionar esto? ¿Es posible degradar a la versión anterior o tiene alguna otra sugerencia?

No sé cómo arreglar Redis, pero he leído algo similar en algún momento. Buscar puede ayudar.

Pero degradar es, en su mayor parte, una mala idea.

No puedes degradar Discourse.
Redis no está utilizando el 95% de la memoria, sino el 38,9%. Sigue siendo mucho.

¿Cómo se ve tu cola de Sidekiq? /sidekiq/queues

Por favor, encuentra los detalles de /sidekiq/queues

Avísame si necesitas algún otro detalle.

¿Son estos correos electrónicos trabajos por casualidad?

Lo dudo. ¿Cómo puedo comprobarlo?

Haz clic en la cola

¿Puedo saber si te refieres a esta sección de colas?

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.

Sí, solo haz clic en la palabra “bajo”

Por favor, encuentre los detalles a continuación

Hay un problema idéntico aquí:

Con quizás una solución:

Dado que no eres el único que experimenta esto, parece un error. :thinking:

Gracias, pero no creo que pueda desactivar el chat. Intentaré encontrar otra manera.

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.

Actualización: Detuve la aplicación y la volví a iniciar, sigo teniendo el mismo problema :slightly_smiling_face:

122 millones de trabajos en cola definitivamente muestran que algo anda mal :thinking:

¿Cuántos usuarios tienes en tu Discourse?
¿Cuántos canales de chat hay?
¿Cuántos usuarios hay en tus 3 canales de chat más grandes?

3 o 4 grupos de chat tienen más de 2 lakh de miembros.

No estoy familiarizado con “lakh”, pero Google dice que son 100.000 :open_mouth: ¿es correcto?

Sí, el número exacto es 227.254 miembros en un solo grupo. Tenemos miembros similares en otros 2 o 3 grupos.