我正在使用docker容器构建一个elixir / phoenix应用程序。 这已经有一段时间了,但最近它停止了工作,错误总是与内存不足有关。
例如,最常见的故障点是在Elixir的mix compile
任务期间(Dockerfile中时间最重的任务),它与错误崩溃:
eheap_alloc: Cannot allocate 147852528 bytes of memory (of type "old_heap").
Crash dump is being written to: erl_crash.dump...done
有时它可能能够通过该步骤,但在稍后的步骤中将再次失败,例如编译前端代码的brunch build
。有时它只是在其他步骤失败而没有特定的错误消息,只是说:
Killed
在发生这种情况时,我可以轻松检查htop
,看看我使用的是3GB或4GB内存,总共16GB,所以不乏物理RAM。
经过一番挖掘后,我发现sudo sysctl vm.overcommit_memory=1
可以提供帮助,但也没有运气。
完全相同的版本在我的另一台运行Arch Linux的计算机上运行正常,而这台运行Ubuntu 16.04