我在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.
答案 0 :(得分:10)
好像你的内存耗尽了。许多VPS服务器都是在没有交换的情况下设置的,所以当你的内存不足时,它会以看似随机的方式消除掉。
解决问题的最简单方法是为您的VPS配置更多内存,可能需要花费更多资金。下一个最好的方法(除了运行更少的东西和内存优化一切运行)将添加交换分区或交换文件。
对于1GB交换文件(以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
来查找负责占用所有内存的过程。