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

**URL:** <https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141>\
**Category:** Bug\
**Created:** [2021年四月26日 13:16 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141 "2021-04-26T13:16:42Z")\
**Posts on this page:** 17\
**Page:** 2

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2021年四月26日 19:58 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/22 "2021-04-26T19:58:47Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Osama](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/osama/32/98013_2.png) [@Osama](https://meta.discourse.org/u/Osama)\
**Post date:** [2021年四月26日 20:26 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/23 "2021-04-26T20:26:08Z")

</div>

好的，已回滚，提交已包含在 tests-passed 中：

> <https://github.com/discourse/discourse/commit/a169dc6832fb90bcec664b0e8bf52026ce0dae3f>
>
> This reverts commit 7217dcb67a59f9c47d655455b60b4e1d8dc30f28.
> 
> https://meta.di…scourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/18?u=osama
> 
> Precompiling test\_helper.js is so expensive that it can make bootstrap
> fail on servers with limited resources (2GB RAM). We will find another
> way that doesn't require much resources.

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

---

<div class="post-metadata">

**Author:** ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)\
**Post date:** [2021年四月26日 20:32 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/24 "2021-04-26T20:32:46Z")

</div>

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

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

而 @pfaffman 并未报告此问题。

另外，我想对以下内容进行评论：

> [@pfaffman](#):
>
> 你可以尝试稍微增加一些交换空间，但我建议增加更多内存。

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

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

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2021年四月26日 20:36 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/25 "2021-04-26T20:36:53Z")

</div>

> [@Ed\_S](#):
>
> `FATAL ERROR: CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足`
> 
> @pfaffman 并未报告此问题。

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

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2021年四月26日 20:37 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/26 "2021-04-26T20:37:47Z")

</div>

> [@Ed\_S](#):
>
> 如果增加交换空间无法解决内存不足的问题，那么增加内存条也无济于事。

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

---

<div class="post-metadata">

**Author:** ![devnull](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@devnull](https://meta.discourse.org/u/devnull)\
**Post date:** [2021年四月26日 20:39 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/27 "2021-04-26T20:39:42Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Ed\_S](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ed_s/32/134015_2.png) [@Ed\_S](https://meta.discourse.org/u/Ed_S)\
**Post date:** [2021年四月26日 20:40 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/28 "2021-04-26T20:40:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![weallwegot](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/weallwegot/32/124753_2.png) [@weallwegot](https://meta.discourse.org/u/weallwegot)\
**Post date:** [2021年四月26日 20:41 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/29 "2021-04-26T20:41:01Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2021年四月27日 01:52 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/30 "2021-04-27T01:52:45Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Osama](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/osama/32/98013_2.png) [@Osama](https://meta.discourse.org/u/Osama)\
**Post date:** [2021年四月28日 20:51 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/31 "2021-04-28T20:51:20Z")

</div>

仅供参考，我已再次[合并](https://github.com/discourse/discourse/commit/4f88f2eb15f57021fba50f4205073272a45943cc)该更改，但这次应该不会破坏 Bootstrap。如果出现问题，请告知我。

---

<div class="post-metadata">

**Author:** ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)\
**Post date:** [2021年四月28日 23:05 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/32 "2021-04-28T23:05:47Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Osama](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/osama/32/98013_2.png) [@Osama](https://meta.discourse.org/u/Osama)\
**Post date:** [2021年四月28日 23:11 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/33 "2021-04-28T23:11:38Z")

</div>

请在这里复制并粘贴错误信息。另外，请提供 `theme_test_helper` 和 `theme_test_vendor` 压缩周围的输出行，它们应如下所示：

```plaintext
12825804.271282336 正在压缩：discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js

```

```plaintext
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

```

```plaintext
完成压缩 discourse/tests/theme_test_helper-790dafad7d3cb8a853fd3127fa3d99022120baf968cbb297066d166808ad3ae1.js：6.85 秒

```

---

<div class="post-metadata">

**Author:** ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)\
**Post date:** [2021年四月28日 23:12 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/34 "2021-04-28T23:12:39Z")

</div>

`\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 可能有助于诊断问题。"

---

<div class="post-metadata">

**Author:** ![Osama](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/osama/32/98013_2.png) [@Osama](https://meta.discourse.org/u/Osama)\
**Post date:** [2021年四月28日 23:38 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/35 "2021-04-28T23:38:14Z")

</div>

能否请您进入容器，查看 `uglifyjs` 的版本？

```plaintext
./launcher enter app
uglifyjs --version

```

另外，请在您的宿主机上执行 `discourse_docker` 相关命令：

```plaintext
git rev-parse HEAD

```

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2021年四月29日 03:35 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/36 "2021-04-29T03:35:42Z")

</div>

@Osama @downey，

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

cc @pmusaraj

---

<div class="post-metadata">

**Author:** ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)\
**Post date:** [2021年四月29日 03:56 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/37 "2021-04-29T03:56:54Z")

</div>

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

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

但据我所知，现在一切正常。🎉

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

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2021年五月3日 04:52 UTC](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141/40 "2021-05-03T04:52:18Z")

</div>



[上一頁](https://meta.discourse.org/t/failed-to-bootstrap-due-to-out-of-memory-killer/188141.md?page=1)
