我一直在我的Linux服务器遇到这个错误。
Resource temporarily unavailable [fork] & insufficient memory for the Java Runtime Environment to continue
我已经将服务器上的nproc限制增加到了2047年。我希望资源不可用的消息不会再来
但是在进入java命令本身的时候,却抛出错误“Insufficent memory”。 我试图设置Java堆内存,但也不允许。 我不知道如何进一步进行。 请帮忙!!
OS是Centos 6.8
Java版本是Jdk 1.6
虚拟化是LXC
主机服务器上运行多个虚拟机。
所有虚拟机的可用内存均为15GB。
由于是LXC虚拟化,所以在所有虚拟机上都有共享内存。
由于我使用的是LXC容器,所以虚拟机的所有进程都来自主机服务器。 因此,如果排除root用户,主机服务器上的进程数量非常大。
最初以为这可能是因为Java堆空间问题,我试图增加堆空间到一个更大的价值。 但问题在重复。
我通过增加主机服务器中的用户进程数来解决问题
/etc/security/limits.d/90-nproc.conf
到16000的大值。
而且我还把每个虚拟机的进程数增加到了4096个更高的值。
现在解决了“Java暂时不可用[fork]和Java运行时环境的内存不足”问题。 现在一切正常。