![资源暂时不可用 [fork] 且 Java 运行时环境内存不足,无法继续运行](https://linux22.com/image/707772/%E8%B5%84%E6%BA%90%E6%9A%82%E6%97%B6%E4%B8%8D%E5%8F%AF%E7%94%A8%20%5Bfork%5D%20%E4%B8%94%20Java%20%E8%BF%90%E8%A1%8C%E6%97%B6%E7%8E%AF%E5%A2%83%E5%86%85%E5%AD%98%E4%B8%8D%E8%B6%B3%EF%BC%8C%E6%97%A0%E6%B3%95%E7%BB%A7%E7%BB%AD%E8%BF%90%E8%A1%8C.png)
我在我的 Linux 服务器中遇到了这个错误。
Resource temporarily unavailable [fork] &
insufficient memory for the Java Runtime Environment to continue
我已将服务器中的 nproc 限制增加到 2047。我希望资源不可用的消息不会再次出现
但在输入 java 命令时,它会抛出错误“内存不足”。我尝试设置 java 堆内存,但同样不允许。我不确定如何继续。请帮忙!!
操作系统是 Centos 6.8
Java 版本是 Jdk 1.6
虚拟化是 LXC
多个虚拟机在主机服务器上运行。
所有虚拟机的可用内存为 15GB。
由于它是 LXC 虚拟化,因此它在所有虚拟机之间共享内存。
答案1
由于我使用的是 LXC 容器,所以虚拟机的所有进程都源自主机服务器。因此,如果我们排除 root 用户,主机服务器上的进程数量会非常大。
最初我以为可能是因为 Java 堆空间问题,并尝试将堆空间增加到更大的值。但问题一直重复出现。
我通过增加主机服务器中的用户进程数量解决了该问题
/etc/security/limits.d/90-nproc.conf
为大值16000。
另外,我将每个虚拟机中的进程数增加到更高的值4096。
现在这两个问题“资源暂时不可用 [fork] 且 Java 运行时环境内存不足,无法继续运行”已解决。现在一切都正常了。