【问题标题】:Meteor is crashing on the smallest DigitalOcean Droplet (out of memory: Kill process ...)Meteor 在最小的 DigitalOcean Droplet 上崩溃(内存不足:杀死进程......)
【发布时间】:2014-11-07 04:01:18
【问题描述】:

我在基本 (512GB) DigitalOcean 液滴上运行简单的 Meteor 应用程序。 Meteor 偶尔会崩溃并显示以下错误消息:

Out of memory: Kill process 9682 (node) ...
...
=> Exited from signal: SIGKILL
FATAL ERROR: JS Allocation failed - process out of memory

怎么了?这是一个非常简单的应用程序,它不会占用所有内存。

【问题讨论】:

  • 我真的很喜欢这个问题标题:]
  • 您是否在流星开发模式下运行?
  • 我这样运行meteor --port 80
  • 表示droplet内存不足。这可能是由于其他代码,如 Web 服务器和数据库服务器,如果您在一个 Droplet 上运行整个堆栈......另外 512MB 是最小的 Droplet,5 美元/月。也许试试 1GB 的 10 美元/月 droplet?托管服务 Modulus.io 每月 15 美元,避免自己维护全栈,对我来说一直很可靠。

标签: node.js memory process meteor digital-ocean


【解决方案1】:

如果你愿意,你可以保留最小的 Droplet。我在每月 5 美元的 DigitalOcean Droplet、512MB RAM 和 20 GB SSD 上遇到了同样的问题。我没有升级而是implemented swap如下:

使用 dd 命令创建并启用交换文件:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

“of=/swapfile”指定文件名。在这种情况下,名称是交换文件。

接下来通过创建一个 linux 交换区来准备交换文件:

sudo mkswap /swapfile

结果显示:

Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb

通过激活交换文件完成:

sudo swapon /swapfile

当您查看交换摘要时,您将能够看到新的交换文件。

swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        262140  0   -1

此文件将在虚拟专用服务器上持续存在,直到机器重新启动。您可以通过将交换添加到 fstab 文件来确保交换是永久性的。

打开文件:

sudo nano /etc/fstab

粘贴到以下行:

 /swapfile       none    swap    sw      0       0 

文件中的 Swappiness 应设置为 10。跳过这一步可能会导致性能下降,而将其设置为 10 会导致 swap 充当紧急缓冲区,防止内存不足崩溃。

您可以使用以下命令执行此操作:

echo 10 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
To prevent the file from being world-readable, you should set up the correct permissions on the swap file:

sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

【讨论】:

  • 是的!虽然使用超过 262mb 的交换空间没有意义,还是我在这里遗漏了什么?
  • 对于任何希望使用此答案的人来说都是一个提醒:YMMV
【解决方案2】:

我能够通过使用比最初指定的交换空间更多(超过 256mb)到 1GB 来解决这个问题。

将 Ubuntu 上的交换空间调整为 1Gb:

sudo swapoff -a

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

sudo mkswap /swapfile

sudo swapon /swapfile

【讨论】:

    【解决方案3】:

    您可以尝试为您的 DigitalOcean 液滴设置交换文件。

    DO 为如何执行此操作提供了出色的指南。你可以在这里找到它:

    https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

    【讨论】:

      【解决方案4】:

      我发现了问题。

      https://github.com/joyent/node/wiki/FAQ#what-is-the-memory-limit-on-a-node-process

      对于 64 位系统,我只使用了 512mb 的 RAM。但不建议节点进程这样做。

      【讨论】:

      • 此存储库已被所有者归档。它现在是只读的。
      • 未来:问:我在低内存系统上遇到可靠性/内存尖峰问题,这是怎么回事? 答: 默认情况下,--max_old_space_size(控制 V8 堆的上限)约为 1.5GB。如果您的系统内存少于此值,则需要将此选项显式设置为该进程可用的适当内存量。例如,--max_old_space_size=128 将允许该进程使用 128MB。
      【解决方案5】:

      我相信这可能与流星可能遇到的问题有关。查看此 github 问题中显示 cpu 使用情况的评论。 https://github.com/meteor/meteor/issues/2536#issuecomment-55295490

      【讨论】:

        【解决方案6】:

        响应马雷克的回答,

        我在 Digital Ocean 上运行 Meanjs 应用程序,虽然在本地一切正常,但当我单独测试我的实时应用程序时,一旦第二个用户登录,它就会耗尽内存并崩溃。

        我没有尝试整个交换,而是从 512mb 的 RAM 的 5 美元/月升级到 1G 的 10 美元/月,到目前为止,我已经拥有多达 6 台具有多个 Chrome 和 Firefox 浏览器的机器同时访问它只是很好。

        【讨论】:

          猜你喜欢
          • 2022-07-06
          • 2013-09-19
          • 2018-09-08
          • 2018-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-01
          相关资源
          最近更新 更多