Память Redis продолжает расти в Discourse 3.4.0.beta3

Недавно я обновил Discourse с версии 3.4.0.beta1 до 3.4.0.beta3. После обновления мы заметили, что использование памяти форумом постепенно увеличивается, что приводит к падению приложения. При проверке сервера видно, что redis-server потребляет 95% памяти.

Мы ежедневно запускаем redis-cli flushall, чтобы временно решить проблему. Экземпляр Discourse размещён в Docker.

Я попытался откатиться до предыдущей версии, но при пересборке возникло несколько ошибок.

Подскажите, пожалуйста, как это исправить? Можно ли откатиться к предыдущей версии или у вас есть другие предложения?

Я не знаю, как исправить Redis, но я читал что-то похожее в какой-то момент. Поиск может помочь.

Но откат версии — это в основном плохая идея.

Вы не можете понизить версию Discourse.
Redis использует не 95% памяти, а 38,9%. Всё равно много.

Как выглядит очередь Sidekiq? /sidekiq/queues

Пожалуйста, ознакомьтесь с деталями /sidekiq/queues

Дайте знать, если потребуются дополнительные сведения.

Неужели эти письма — о вакансиях?

Сомневаюсь. Как я могу это проверить?

Нажмите на очередь

Подскажите, вы имеете в виду этот раздел очереди?

Ещё один момент: в разделе /sidekiq/scheduler/history я вижу, что задача Jobs::Chat::EmailNotifications выполняется уже довольно долго.

Да, просто нажмите на слово «низкий».

Подробности ниже

Здесь есть аналогичная проблема:

Возможно, с решением:

Поскольку вы не единственный, кто столкнулся с этим, похоже, что это ошибка. :thinking:

Спасибо, но я не думаю, что смогу отключить чат. Я попробую найти другой способ.

В качестве временного решения я создал небольшой bash-скрипт для очистки памяти Redis и настроил его запуск ежедневно в 6:00 с помощью cron.
Примечание: Я сохраняю логи в /home/ubuntu/logs. Вы можете проигнорировать это, если вам это не нужно.

#!/bin/bash

# Установить директорию и имя файла лога
LOG_DIR="/home/ubuntu/logs"
LOG_FILE="$LOG_DIR/redis.cleanup.$(date +\%Y-\%m-\%d).log"

# Убедиться, что директория логов существует
mkdir -p "$LOG_DIR"

# Записать информацию об окружающей среде (сторона хоста)
echo "Запуск скрипта в $(date)" >> "$LOG_FILE"

# Запустить загрузчик Discourse в приложении и сохранить вывод в файл лога (сторона хоста)
echo "Команда очистки Redis" >> "$LOG_FILE"
docker exec app redis-cli flushall >> "$LOG_FILE" 2>&1

# Указать, что скрипт завершен (сторона хоста), и выйти
echo "Скрипт успешно выполнен в $(date)" >> "$LOG_FILE"
exit 0

Обновление: Похоже, проблема исправилась автоматически. Теперь, когда я вспоминаю, у нас была похожая проблема в прошлый раз при обновлении версии — потребление памяти продолжало расти, но через некоторое время всё приходило в норму. Похоже, это баг.

Обновление: я остановил приложение и запустил его снова, но столкнулся с той же проблемой :slightly_smiling_face:

122 млн очередей задач определённо указывает на проблему :thinking:

Сколько у вас пользователей на Discourse?
Сколько каналов chat?
Сколько пользователей в ваших 3 крупнейших каналах чата?

В 3,4 чат-группах насчитывается более 2 лакхов участников

Я не знаком с термином «лак», но в Google написано, что это 100 000 :open_mouth: Это верно?

Да, точное число составляет 227 254 участника в одной группе. У нас есть похожие участники в 2 или 3 других группах.