我正在基本(512GB)DigitalOcean小滴上运行简单的Meteor应用程序。 meteor 偶尔会因以下错误消息而崩溃:
Out of memory: Kill process 9682 (node) ...
...
=> Exited from signal: SIGKILL
FATAL ERROR: JS Allocation failed - process out of memory
怎么了?这是一个非常简单的应用程序,无法花费所有内存。
最佳答案
如果需要,可以保留最小的Droplet。我在$ 5/mo DigitalOcean Droplet,512MB RAM和20 GB SSD上遇到了相同的问题。我没有升级,但改为implemented swap,如下所示:
使用dd命令创建并启用交换文件:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k
“of =/swapfile”指定文件的名称。在这种情况下,名称为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