fuse
(Geoff Hughes)
1
分享此信息,以防其他人在管理面板中看到“正在更新”的提示,但实际上并无更新在进行,且论坛其他方面运行正常时有所帮助。
虽然这从未影响 Docker 管理器的更新,但在过去几个版本中,我不得不通过命令行界面(CLI)进行更新,因为管理面板始终显示 Discourse 正在更新。
我的论坛规模较小,没有自定义插件。
解决该问题的方法是清除 Redis 缓存。
虽然无法透露根本原因,但达到我对 Discourse 更新流程知识和理解的上限确实令人非常沮丧(这不是抱怨,而是坦诚承认)。
在此之前,重建应用(rebuild app)一直是解决几乎所有问题的可靠方法。
RGJ
(Richard - Communiteq)
2
Redis 还存储用户会话以及更多内容。完全清空 Redis 会导致所有用户登出,并删除所有待处理的 Sidekiq 任务。已排期的任务仅会在下次重启后恢复。
这应仅作为最后手段,即便如此,我也建议您先查明具体是哪个键导致问题,而不是直接执行 flushall。这就像为了消灭一只老鼠而将整个建筑付之一炬。
Ed_S
(Ed S)
3
能否改为重启 Redis?我认为它是一个内存数据库,因此服务器重启后不会保留任何数据。而且服务器重启不会造成数据丢失(并且可能随时发生)。
RGJ
(Richard - Communiteq)
4
这是不正确的。Redis 确实会将数据持久化到磁盘。
fuse
(Geoff Hughes)
5
感谢您的真知灼见和专业经验。
我尝试过的方法:
通过管理面板进行更新(失败/从未启动)
按照手动更新 Discourse 的步骤操作(在过去三个版本中)
进行了多次启动器应用的重建。
在论坛中搜索了类似的问题和解决方案。
最后求助于 ChatGPT 查询,虽然 ChatGPT 本身认为这不太可能修复问题(并建议了我已经尝试过的方法),但它却揭示了 Redis 相关的选项。
正是这一操作解决了问题。
我理解这个类比。
作为替代方案,我本还可以做些什么来更好地理解和解决这个问题?
Ed_S
(Ed S)
6
为了明确起见,您发现
cd /var/discourse
git pull
./launcher rebuild app
对您不起作用?(具体在哪些方面不起作用?这是标准安装吗?)
fuse
(Geoff Hughes)
7
未执行 git pull,但已重新构建启动器应用。
该过程运行正常,只是管理面板一直认为更新仍在进行中,未清除该状态。
Ed_S
(Ed S)
8
谢谢——所以你的观察是管理面板更新对你不起作用。另外,它有一段时间对我也不起作用了!如果能正常工作就更好了。
Lilly
9
我更喜欢命令行更新,但这次我在 iPhone 15 上通过界面完成了 Docker 和 Discourse 的更新,效果相当不错(在 DigitalOcean 上的标准安装)。
我通常会在其中一台电脑上全部通过命令行操作,因为上次尝试界面更新时失败了(那是几个月前的事,所以我最终还是得通过 SSH 登录)。
Ethsim2
(Ethan )
10
free -h 返回什么?
app.yml 中的 UNICORN_WORKERS 设置为什么?
app.yml 中的 db_shared_buffers 设置为什么?
app.yml 中的 db_work_mem 是否被注释掉了?
你的服务器有多少个(虚拟)CPU?
fuse
(Geoff Hughes)
11
Free -h 显示:总内存 3.8Gi,已用 1.7Gi,空闲 134Mi,共享 1.0Gi,缓冲/缓存 2.0Gi,可用 788Mi
交换空间 2.0Gi,已用 290Mi,空闲 1.7Gi
UNICORN_WORKERS: 4
db_shared_buffers 1GB
db_work_mem 已被注释,设置为 40MB
我正在运行一个 2 vCPU 4GB RAM 的实例。
感谢提问!