SSH和-bash:fork:无法分配内存VPS Ubuntu

时间:2014-11-18 01:47:39

标签: ruby-on-rails ubuntu nginx vps unicorn

我在Ubuntu 12.04 VPS,Nginx + Unicorn上托管我的Rails应用程序,部署后一切都很好,但几个小时之后,当我ssh到VPS时,我收到此消息

-bash: fork: Cannot allocate memory

-bash: wait_for: No record of process 4201 

-bash: wait_for: No record of process 4201 

如果我运行任何命令,它将返回

-bash: fork: Cannot allocate memory.

2 个答案:

答案 0 :(得分:10)

好像你的内存耗尽了。许多VPS服务器都是在没有交换的情况下设置的,所以当你的内存不足时,它会以看似随机的方式消除掉。

解决问题的最简单方法是为您的VPS配置更多内存,可能需要花费更多资金。下一个最好的方法(除了运行更少的东西和内存优化一切运行)将添加交换分区或交换文件。

对于1G​​B交换文件(以root身份):

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

请务必将其添加到/ etc / fstab中:

/swapfile none swap defaults 0 0

这会让它在重启后回来。

答案 1 :(得分:0)

要在不重新启动的情况下摆脱这种状况,可以按以下方式手动触发OOM杀手:

echo 1 > /proc/sys/kernel/sysrq
echo f > /proc/sysrq-trigger
echo 0 > /proc/sys/kernel/sysrq

完成后,您可以检查dmesg来查找负责占用所有内存的过程。