在错误日志中,我间歇性地收到以下错误。这会导致网站在 15 到 30 秒内无法访问,直到恢复。
Info 错误信息:
PG::ConnectionBad(致命错误:数据库系统正处于恢复模式)/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in initialize
Env 错误信息:
我在查看这些日志时发现一件非常奇怪的事:系统似乎在查找 /var/www/… 下的文件夹,但该文件夹在服务器上并不存在。它应该存在吗?任何帮助都将不胜感激。
1 个赞
pfaffman
(Jay Pfaffman)
2
如果数据库损坏,那么网站必然也会出问题。你需要找出原因。最常见的原因是内存不足和磁盘空间不足。我猜是内存问题。你有多少内存?free -h 的输出是什么?
那是容器内部的路径。如果你执行 ./launcher enter app,就能看到它在那里。
3 个赞
pfaffman
(Jay Pfaffman)
4
好吧,你有 646M 可用内存,而 4GB 的内存通常已足够,无需使用交换空间。你的数据库有多大?流量有多少?服务器上除了 Discourse 还在运行其他服务吗?
2 个赞
服务器上除了 Discourse 外没有其他服务在运行。
为了获取大小,我运行了以下命令:
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
输出结果为 4650 MB(1 行)
关于流量:
昨天有 1,200 次页面浏览量,过去一周为 12,400 次。过去一周大约有 160 名用户,任意时刻的并发用户数约为 80 人。
1 个赞
Stephen
(Stephen)
6
如果您有闲置的磁盘空间,请添加交换分区,为自己争取一些临时的缓冲空间。
2 个赞
我在那儿加了一个 GB 的交换空间。我们看看今晚高峰流量时会发生什么。

1 个赞
你太棒了。1 GB 的交换空间似乎彻底解决了所有崩溃问题。说实话,我很庆幸这是内存(RAM)问题而不是数据库(DB)问题。我打算在周末增加服务器的内存容量。非常感谢所有在这个帖子中提供帮助的朋友们!
3 个赞
pfaffman
(Jay Pfaffman)
9
完成后,请重新运行 discourse-setup 以重置内存参数。
3 个赞
说实话不太确定。在此之前,我们在更换硬件后曾进行过重建和服务器重启。我推测,重启后 Discourse 应该会检测到任何系统变更。
在安装了交换文件后,有时“内存”使用量会超过 4 GB,因此这显然是在我们最繁忙时段导致服务器崩溃的问题所在,而该时段与服务器崩溃的时间段完全吻合。我们今天进行了升级,现在网站运行非常顺畅。
3 个赞
pfaffman
(Jay Pfaffman)
12
但事实并非如此。有些设置(例如控制数据库可用内存大小的参数)是嵌入在 app.yml 中的。你可以手动编辑它们,或者重新运行 discourse-setup。
2 个赞
我今天重新运行了 discourse-setup 函数,因为之前我不知道这一点。这对我来说是全新的。
3 个赞
system
(system)
关闭
14
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.