突然引导失败了

我没有有意识地更改任何内容,但今天,当我 just git pull-ed 并尝试引导 web_only.yml 时,它出现了错误,在引导过程开始约 90 秒后。如果这有助于诊断,我将粘贴错误日志的最后几行:

/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.6/lib/zeitwerk/kernel.rb:38:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:348:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.3.1/lib/rails/application.rb:511:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
I, [2022-12-29T10:28:07.806753 #1]  INFO -- : gem install geocoder -v 1.4.4 -i /var/www/discourse/plugins/discourse-locations/gems/3.1.3 --no-document --ignore-dependencies --no-user-install
Successfully installed geocoder-1.4.4
1 gem installed


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 1066 exit 1&gt;
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
9b7ac0c88b42b2aa1eccb9ef291527f4afd8b71861669af66ab79dee5ed82a45

我无法理解为什么它不允许引导以前成功的相同 yml 文件。我的网站虽然工作正常。

我在“Discourse-Doctor”中也没有找到任何“错误”(我只能搜索“error”这个词,而它不在 Discourse Doctor 的结果文件中)。不过,我不是专家。

尝试移除 locations 插件。

4 个赞

你说得很对。我现在能够完全成功地引导 Web 容器了!!!非常感谢,这是我第无数次感谢你了。


但是现在我之前所有的帖子和用户的“映射/位置”都消失了。

有什么替代方案吗?我知道我可以,也应该,并且会更多地搜索该插件的主题。但简而言之,这个问题有什么解决方案吗?

1 个赞

时间。我相信下周或两周内会修复。

4 个赞

昨天,在禁用“location”插件后,我能够成功重建我的 web_only 容器。但今天,即使逐一禁用所有插件,引导过程仍然失败。

Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #&lt;Process::Status: pid 900 exit 137&gt;
Location of failure: /usr/local/lib/ruby/gems/3.1.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 137
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
2c5f01d5ca6b216e744e11547b121e64aac0ad5e37d64d2ec5e2f279fe766c6a

尽管 我的网站 运行正常。

我该如何处理这个问题?请指引我。

您无法重建,但可以启动应用程序?

1 个赞

是的,容器已经启动,网站也能正常工作。但是当我尝试重建/引导同一个容器(仅限 web)时,它会报错。尽管昨天遇到同样的问题时,禁用“location”插件成功引导了它,但今天即使没有任何更改,它仍然失败了。

1 个赞

您的网站现在似乎已离线。编辑:不,它回来了。不过大部分是印地语,我看不懂。

只是为了确保。您的 app.yml 文件中目前没有启用任何插件吗?它们都被注释掉了/删除了?

错误代码 137 表示内存不足。

5 个赞

这会不会有问题?
Discourse 现在是否需要超过 4 GB 的内存(即使所有插件都关闭)?
运行在同一液滴/实例上的其他 2 个 wpress 网站几乎处于休眠状态。

除了升级到 8 GB 内存的机器之外,有没有简单的解决方案?

是的,您只有 400MB 的可用内存,这不允许 Discourse 进行重建。尝试将其提高到 4/5GB,或者在重建之前关闭论坛然后重试。

假设 400MB 是空闲内存。重建对系统来说相当耗费资源(我会在 Proxmox 上为我的网站查找它,但它已经离线一段时间了),并且需要比空闲时更多的内存。

抱歉,我不太明白你的意思。你的意思是应该再增加4到5GB吗?也就是说,从4GB增加到8GB或9GB?

我该如何关闭我的论坛(即网站)?
还有,你的意思是增加内存后,我还是应该在重建之前关闭我的网站吗?

感谢你的指导。

在添加内存之前,请尝试在命令行中运行此命令。
这也假设您有一个标准安装。请确保您位于 /var/discourse 目录中。

./launcher stop app && ./launcher rebuild app && ./launcher start app

1 个赞

你说得对!

我重启了我的 Ubuntu 服务器,这使得我的实例上有大约 700 到 800 MB 的可用内存,并且引导成功了。如果启用所需插件后再次重建/引导失败,我将不得不停止我的容器。

但我对 Discourse 新的内存需求感到震惊。当我从 4GB 内存升级到 8GB 内存时,实例/液滴的成本几乎翻倍。我并不希望这样,因为我的网站非常非常非常小(每天可能只有 10 个访客)。以前 Discourse 的标准安装似乎只需要 1 到 2GB 的内存。

非常感谢你帮助我认识到哪里出了问题。

1 个赞

如果可能的话,我建议使用 8GB 的机器(如果可用)。2GB 的机器适用于较小的论坛,而您的论坛内容似乎很多。

1 个赞

我现在有 4 GB,访问次数很少。将来会考虑升级到 8 GB(没有 6 GB)。

顺便说一下,谷歌上的一些文章说,可用内存量关系不大。因为这部分内存是空闲的,什么也没做。用户应该查看“可用内存”,这部分内存可以在需要时使用。在我的例子中,可用内存是 1.4 GB。

如果可以的话,我希望您在这方面也能给我指导。

1 个赞

您的系统在有 1.4GB 可用空间的情况下正在做什么?

1 个赞

如上面的截图/文章所述,“可用”包括“缓冲区内存”等,在需要时可能“可供系统使用”。但我对此并不在行。

而且,我还在研究这些(再说一遍,我不是专家)。虽然我猜测我的另外两个 WordPress 网站,我几乎认为它们处于休眠状态,可能与此有关。有空时我会尝试关闭它们,然后比较性能。

现在,我的重建问题已经解决,无需升级资源并每月支付近两倍的费用。感谢你。

1 个赞

所以这不是一个好主意。

另外,配置一些交换空间也是个好主意。

您可以添加交换空间。重建需要大量 RAM。此外,由于您在服务器上运行了除 discourse 之外的其他程序,因此需要比最低要求更多的内存。即使其他网站没有流量,运行其他 Web 服务器也会消耗一些内存。

3 个赞