AIX - 无法创建 VM 线程。系统资源不足

Posted

技术标签:

【中文标题】AIX - 无法创建 VM 线程。系统资源不足【英文标题】:AIX - Cannot create VM thread. Out of system resources 【发布时间】:2020-04-02 11:08:50 【问题描述】:

我们有一个批处理作业可以在 Java 6 上顺利运行。但是,我正在尝试将其更新到 Java 8,但会引发以下错误。

VM 初始化过程中发生错误无法创建 VM 线程。

系统资源不足。

这是批处理作业的 sn-p。

execute $JAVA_HOME/bin/java -Xmx2500m -classpath $CLASSPATH org.springframework.batch.core.launch.support.CommandLineJobRunner app-context/main-context.xml

我使用的机器是 Unix AIX。

$uname -a
AIX <servername> 2 7 00CBE6574C00

Java 8 已安装在机器上。 JAR 文件也被编译为 Java 8。

$java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 8.0.5.41 - ### (SR5 FP41))
IBM J9 VM (build 2.9, JRE 1.8.0 AIX ppc64-64-Bit Compressed References ### (JIT enabled, AOT enabled)

我认为这可能是堆大小问题,所以我使用了从 -Xmx64m 到 -Xmx5000m 的最大堆大小。但是,错误仍然存​​在。

这是系统电流限制:

$ulimit -a
core file size          (blocks, -c) 1048575
data seg size           (kbytes, -d) 131072
file size               (blocks, -f) unlimited
max memory size         (kbytes, -m) 32768
open files                      (-n) 40961
pipe size            (512 bytes, -p) 64
stack size              (kbytes, -s) 32768
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited

我是 unix 新手。任何帮助,将不胜感激。谢谢。

【问题讨论】:

【参考方案1】:

您要求使用 2.5G 堆空间 (-Xmx2500m) 的 VM,但您只允许 32M 内存(最大内存大小 32786kb = 32MB)。

尝试将最大内存增加到(至少)2.6G。您将需要比您为堆指定的数量略多一些,以适应 VM 固定成本。

【讨论】:

谢谢,达什。但是,我认为这不是问题所在,因为它使用 -Xmx2500m 和最大内存大小 32786kb 在 Java 6 上运行顺畅。除了将其升级到 Java 8 之外,没有任何环境变化。 请尝试使用更大的ulimit 值:新程序比旧程序占用更多内存已不是什么秘密。【参考方案2】:

再次尝试更新 java 应用程序。它肯定会起作用。或者增加内存VRA

【讨论】:

以上是关于AIX - 无法创建 VM 线程。系统资源不足的主要内容,如果未能解决你的问题,请参考以下文章

系统资源不足,无法完成请求的服务这个问题怎么解决?在线等!

Java多线程和线程池(转)

线程池

系统资源不够,无法完成API怎么办?

JAVA线程池学习以及队列拒绝策略

VB.net学习笔记(三十)认识线程池