内存不足杀手导致引导失败

之后将其放在功能开关后面可能是一个好主意,这样我们可以在内部对其进行迭代。

3 个赞

好的,已回滚,提交已包含在 tests-passed 中:

感谢告知,并为带来的不便致歉。

7 个赞

我很想听听这个回退是否也解决了原始发帖人(OP)的问题。原始发帖人(@devnull)报告看到了

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

@pfaffman 并未报告此问题。

另外,我想对以下内容进行评论:

增加内存有时可以提升性能,但对于真正因内存不足而导致的失败,关键在于内存加交换空间的总和。如果增加交换空间无法解决内存不足的问题,那么增加内存也不会起作用。

正如 @weallwegot 所报告的那样,即使在增加了 4GB 交换空间后,故障仍然存在,这说明某个进程(或曾经)确实非常“贪吃”。

2 个赞

是同一个错误。查看回溯信息可知,第四行提到了 OOM(内存不足)。

3 个赞

以上说法都正确。他的内存小于 1GB,这确实不多。因此,即使他没有遇到这个问题,我仍然建议他增加更多内存。事实上,我主要建议任何内存小于 2GB 的用户升级内存。

1 个赞

问题已解决。重新构建应用有效。非常感谢您的努力!

3 个赞

(完全理解,我接受这个建议,只是其中的逻辑似乎可能会产生误导。)

2 个赞

顺便提一下,我使用这两个插件重新构建时没有任何问题。不过现在我有了 6G 的交换空间,所以这并不完全公平可比,哈哈。

4 个赞

谢谢!我又可以正常运作了。

6 个赞

仅供参考,我已再次合并该更改,但这次应该不会破坏 Bootstrap。如果出现问题,请告知我。

2 个赞

我刚才在 bootstrap 中也遇到了与 @pfaffman 描述的相同类型的故障……theme_test_helper 处出现解析错误。如果需要更多信息,请告诉我。

1 个赞

请在这里复制并粘贴错误信息。另外,请提供 theme_test_helpertheme_test_vendor 压缩周围的输出行,它们应如下所示:

12825804.271282336 正在压缩:discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js
gzip -f -c -9 /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js > /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.gz

brotli -f --quality=11 /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js --output=/var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.br
完成压缩 discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js:6.85 秒

\n6061451.556507351 正在压缩:discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js\nuglifyjs '/var/www/discourse/public/assets/discourse/tests/_theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js' -m -c -o '/var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js' --source-map \"base='/var/www/discourse/public/assets/discourse/tests',root='/assets/discourse/tests',url='/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js.map'\"\n在 _theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js:27883,17 处发生解析错误\ndefine(\"sinon\", () =\u003e {\n ^\n错误:意外的标记:标点符号 «)»\n at JS_Parse_Error.get (eval at \u003canonymous\u003e (/usr/lib/node_modules/uglify-js/tools/node.js:18:1), \u003canonymous\u003e:71:23)\n at fatal (/usr/lib/node_modules/uglify-js/bin/uglifyjs:409:27)\n at run (/usr/lib/node_modules/uglify-js/bin/uglifyjs:347:9)\n at Object.\u003canonymous\u003e (/usr/lib/node_modules/uglify-js/bin/uglifyjs:261:5)\n at Module._compile (internal/modules/cjs/loader.js:778:30)\n at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)\n at Module.load (internal/modules/cjs/loader.js:653:32)\n at tryModuleLoad (internal/modules/cjs/loader.js:593:12)\n at Function.Module._load (internal/modules/cjs/loader.js:585:3)\n at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)\nrake 中止!\nErrno::ENOENT: 没有那个文件或目录 @ rb_file_s_size - /var/www/discourse/public/assets/discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js\n/var/www/discourse/lib/tasks/assets.rake:290:in `size'\n/var/www/discourse/lib/tasks/assets.rake:290:in `block (4 levels) in \u003cmain\u003e'\n/var/www/discourse/lib/tasks/assets.rake:181:in `block in concurrent?'\n/var/www/discourse/lib/tasks/assets.rake:281:in `block (3 levels) in \u003cmain\u003e'\n/var/www/discourse/lib/tasks/assets.rake:272:in `each'\n/var/www/discourse/lib/tasks/assets.rake:272:in `block (2 levels) in \u003cmain\u003e'\n/var/www/discourse/lib/tasks/assets.rake:181:in `concurrent?'\n/var/www/discourse/lib/tasks/assets.rake:269:in `block in \u003cmain\u003e'\n/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `\u003ctop (required)\u003e'\n/usr/local/bin/bundle:23:in `load'\n/usr/local/bin/bundle:23:in `\u003cmain\u003e'\n任务:TOP =\u003e assets:precompile\n(通过运行带有 --trace 的任务查看完整堆栈跟踪)\n\n\n当然,在运行完其余插件、主题组件等之后:\n\n`````\n失败\n--------------------\nPups::ExecError: cd /var/www/discourse \u0026\u0026 su discourse -c ‘bundle exec rake themes:update assets:precompile’ 执行失败,返回状态为 #\u003cProcess::Status: pid 5128 exit 1\u003e\n失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn’\n执行失败,参数为 {"cd"=\u003e"$home", "hook"=\u003e"assets_precompile", "cmd"=\u003e["su discourse -c ‘bundle exec rake themes:update assets:precompile’"]}\n29b7ee9f8297bdac0cc17dae6117ebe5aa94dcdf3f5dbfed4bf03b0bd7751cc0\n** 启动失败 ** 请向上滚动并查找更早的错误消息,可能不止一条。\n./discourse-doctor 可能有助于诊断问题。"

4 个赞

能否请您进入容器,查看 uglifyjs 的版本?

./launcher enter app
uglifyjs --version

另外,请在您的宿主机上执行 discourse_docker 相关命令:

git rev-parse HEAD
5 个赞

@Osama @downey

我们几个小时前更新了基础镜像,现在正在强制使用新的基础镜像,以便正确编译 2015 年的 JavaScript。请执行 git pull,然后尝试重新构建 @downey?现在应该使用 terser 而不是 uglify 了。

cc @pmusaraj

6 个赞

谢谢大家。我因家庭事务离开了一会儿,但很高兴看到这次更新。

好消息:我执行了 git pull 并重新构建,一切似乎都运行正常。(不过,系统提示可用空间不足 5GB,因此我需要清理一些旧的 Docker 镜像后重试了一次。)

但据我所知,现在一切正常。:tada:

如果你们需要我提供更多信息,请随时告知。

8 个赞