系统相关
首页 > 系统相关> > Linux / JVM – OutOfMemoryError:无法创建新的本机线程

Linux / JVM – OutOfMemoryError:无法创建新的本机线程

作者:互联网

我的Linux服务器(CentOS)存在内存问题.它是一个VM.以下是上下文.

它有70Gb的RAM.有2个tomcat在上面运行.

给一个tomcat一堆13Gb,另一个给一堆20Gb.

具有20Gb的那个具有JVM选项-Xss160k设置(试图解决我的问题).

这2个tomcat可以使用高达48Gb的RAM(virt.)

Linux将使用70Gb,并且将有大约35Gb的缓存内存.交换是1Gb,它几乎不使用它(8Mb).

现在的问题是我每隔一段时间就从tomcat中得到以下错误:

OutOfMemoryError: unable to create new native thread

如果我没有弄错的话,如果操作系统本身内存不足而无法创建新线程,就会发生这种情况.

现在的问题是:当它有35Gb的缓存内存时,这怎么可能?它不应该重新分配它并根据需要使用它.

是否可以设置一些内核选项来避免这种情况?例如,它可以使用高达65Gb,缓存30Gb并保持5Gb空闲.

解决方法:

这可能是使用ulimit设置限制的问题.作为运行tomcat的用户,做

ulimit -a

在输出中,查找最大用户进程行.

max user processes              (-u) 1024

尝试提高该值,例如ulimit -u 4096,在启动tomcat之前.

标签:java,linux,memory,virtual-machine,virtual-memory
来源: https://codeday.me/bug/20190813/1646447.html