Discourse 论坛我遇到两次资源占满的情况,第一次通过升级解决了问题,过年以后又遇到了占满 CPU 与内存的情况。即使没人访问一样会占满服务器的所有资源。 这次原因可能是之前服务器磁盘满了,Discourse 会在后台循环处理一些任务,比如给用户发送邮件,如果任务无法执行,会不断的重试。这应该就是导致占满资源的原因。在下面这个页面上你会看到重试的任务。访问地址:
sidekiq/retries
导致任务不断重试是因为我的邮件配置有问题。可以使用阿里云的邮件推送服务,宁皓网有相关的课程。
我折腾了一圈,升级 Discourse,升级 Docker,更新 Docker 配置,更换服务器,恢复备份。但实际上,只需要几步就能解决:
cd /var/discourse
./launcher enter app
redis-cli flushall
折腾过程
我用了一台 1 核 2G 的阿里云 ECS 服务器。遇到问题以后,重新启动应用可以维持一段时间,越往后就越严重。最开始想到的是升级 Discourse。