Redis内存在Discourse 3.4.0.beta3中持续增加

我最近将 Discourse 从 3.4.0.beta1 版本更新到了 3.4.0.beta3。更新后,我们注意到论坛的内存使用量在逐渐增加,导致应用程序崩溃。当检查服务器时,我们可以看到 redis-server 占用了 95% 的内存。

我们每天运行 redis-cli flushall 来暂时解决这个问题。Discourse 实例托管在 Docker 中。

我尝试降级到之前的版本,但在重建时出现了一些错误。

2 个赞

我能知道如何修复这个问题吗?是否可以降级到之前的版本,或者您有什么其他建议?

我不知道如何修复 Redis,但我以前读过类似的东西。搜索可能会有帮助。

但降级通常是个坏主意。

1 个赞

您无法降级 Discourse。
Redis 未使用 95% 的内存,而是使用了 38.9%。仍然很多。

您的 Sidekiq 队列看起来怎么样?/sidekiq/queues

请查找 /sidekiq/queues 的详细信息

如果您需要任何其他详细信息,请告诉我。

1 个赞

这些邮件是工作机会吗?

2 个赞

我不这么认为。我该如何检查?

点击队列

请问您指的是这个队列部分吗?

另外,在 /sidekiq/scheduler/history 下,我发现 Jobs::Chat::EmailNotifications 仍在长时间运行。

是的,只需点击“low”一词即可

1 个赞

请查找以下详细信息

这里有一个类似的问题:

也许有一个修复方法:

由于你不是唯一遇到这个问题的人,这看起来像是一个bug。 :thinking:

谢谢,但我认为我无法关闭聊天。我会尝试找出其他方法。

作为临时解决方案,我创建了一个小的 bash 脚本来清理 Redis 内存,并使用 cron 作业将其设置为每天早上 6 点运行。
注意:我将日志保存在 /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 "Running script at $(date)" >> "$LOG_FILE"

# 在应用程序中运行 discourse launcher 并将输出保存到日志文件(主机端)
echo "redis cleanup command" >> "$LOG_FILE"
docker exec app redis-cli flushall >> "$LOG_FILE" 2>&1

# 指示脚本已完成(主机端)并退出
echo "Script completed successfully at $(date)" >> "$LOG_FILE"
exit 0
2 个赞

更新:似乎已自动修复。现在我想起来了,上次更新版本时我们也遇到了类似的问题,内存持续飙升,但过了一会儿就自行修复了。这似乎是一个 bug。

2 个赞

更新:我停止了应用然后重新启动,我遇到了同样的问题 :slightly_smiling_face:

1 个赞

1.22 亿个排队的作业肯定说明有问题 :thinking:

您的 Discourse 有多少用户?
有多少个 chat 频道?
您最大的 3 个 chat 频道各有多少用户?

1 个赞

3、4个聊天群的成员超过20万

我不熟悉“lakh”,但谷歌说它是100,000 :open_mouth: 是正确的吗?

1 个赞

是的,一个群组的确切人数是 227,254 名成员。我们在另外 2 到 3 个群组中也有类似的成员。

1 个赞