node.js - Meteor 在最小的 DigitalOcean Droplet 上崩溃(内存不足 : Kill process . ..)

标签 node.js memory process meteor digital-ocean

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

enter image description here

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

怎么了?这是一个非常简单的应用程序,它无法耗尽所有内存。

最佳答案

如果需要,您可以保留最小的 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 将导致交换充当紧急缓冲区,防止内存不足崩溃。

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

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

关于node.js - Meteor 在最小的 DigitalOcean Droplet 上崩溃(内存不足 : Kill process . ..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817347/

相关文章:

c++ - 如何释放树占用的内存?

PHP 检查进程 ID

c - 如何在实时 Linux 中进行进程间通信?

node.js - 检查 npm 依赖项是否存在安全问题的最佳方法是什么?

database - Sequelize验证抛出错误

node.js - 无法使用 nestjs/mongoose 连接 mongoDB

php - 传递大变量时如何减少内存使用

ios - 如何解决 iOS 中的此警告?内存泄漏

node.js - aws bean 茎 nodejs : how to override 60s timeout of nginx

Android low memory killer & application back stack