JVM最多能创建多少个线程: unable to create new native thread

最近需要测试一个长连接服务器,数据上需要达到100W的长连接,测试的客户端,一个线程保持一个连接,发现linux服务器默认创建到3200多个线程的时候,就会报错这个错误“java.lang.OutOfMemoryError: unable to create new native thread。而且,此时整个系统都不能创新新的线程了,不能连接终端,不能执行任何命令。

貌似是内存不足,但实际内存尚有富余,经验证,是linux的一些内核参数限制了创建新的线程。

因为要保持长连接,所有先修改客户端保证更大的分配端口范围

修改 /etc/sysctl.conf

添加这样一行:

net.ipv4.ip_local_port_range = 1024 61000

修改系统参数

echo "100000" > /proc/sys/kernel/threads-max
echo "100000" > /proc/sys/kernel/pid_max     (默认32768)
echo "200000" > /proc/sys/vm/max_map_count   (默认65530)

修改/etc/security/limits.conf

*       -      nproc      999999

*       -      nofile      999999

PS:nproc是修改系统的max user processes大小;nofile  是修改open files的大小,另外linux 2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/sys/fs/nr_open来设置,不过,999999足够用了。

很多人可能会遇到,只能启动32000多个线程就不能再起更多的线程了,其实就是pid_max = 32768 给限制住了

JVM最多能创建多少个线程: unable to create new native thread

时间: 2024-10-26 13:06:58

JVM最多能创建多少个线程: unable to create new native thread的相关文章

JVM虚拟机宕机_java.lang.OutOfMemoryError: unable to create new native thread

原因:当前用户的系统最最大程序数数已达到最大值,使用ulimit -u可以看到是1024   解决办法:在当前用户下使用ulimit -u 65535 然后再执行jsp,一切ok 功能说明:控制shell程序的资源.语 法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大 小>][-

JVM截至多少线程可以创建: unable to create new native thread

最近的测试需要很长的连接server.这些数据需要达到100W长连接,试client.一个线程来保持连接.查找linuxserver创建者默认3200当多个线程.这个错误将得到"java.lang.OutOfMemoryError: unable to create new native thread.并且,此时整个系统都不能创新新的线程了,不能连接终端,不能运行不论什么命令. 貌似是内存不足.但实际内存尚有富余.经验证.是linux的一些内核參数限制了创建新的线程. watermark/2/t

JVM最多能创建多少个线程:unabletocreatenewnativethread

最近需要测试一个长连接服务器,数据上需要达到100W的长连接,测试的客户端,一个线程保持一个连接,发现linux服务器默认创建到3200多个线程的时候,就会报错这个错误“java.lang.OutOfMemoryError: unable to create new native thread.而且,此时整个系统都不能创新新的线程了,不能连接终端,不能执行任何命令. 貌似是内存不足,但实际内存尚有富余,经验证,是linux的一些内核参数限制了创建新的线程. 因为要保持长连接,所有先修改客户端保证

java.lang.OutOfMemoryError: unable to create new native thread(转)

解决 - java.lang.OutOfMemoryError: unable to create new native thread 工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题.分析问题.解决问题. 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题: 运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP, 1.5.0_22, myeclipse 6.6, 测试程序: Java代码 import

解决 - java.lang.OutOfMemoryError: unable to create new native thread (转载)

一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题: 运行的环境 (有必要说明一下,不同环境会有不同的结果):32位 Windows XP,Sun JDK 1.6.0_18, eclipse 3.4, 测试程序: Java代码 import java.util.concurrent.CountDownLatch; public class TestNativeOutOfMemoryError { public static void main(String[] args) { for

解决 - java.lang.OutOfMemoryError: unable to create new native thread

以前常遇到此问题,一般想法就是修改配置启动参数,想方设法增大参数,认为这样可以避免内存溢出.但效果基本上还是会出错.我在网上找到了一篇文章解决此问题 点击打开链接 主要观点为 这个异常问题本质原因是我们创建了太多的线程,而能创建的线程数是有限制的,导致了异常的发生.能创建的线程数的具体计算公式如下: (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads MaxProces

Hive java.lang.OutOfMemoryError: unable to create new native thread异常

最近在同一时刻执行多个hive -e 操作时,出现了java.lang.OutOfMemoryError: unable to create new native thread异常 或Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreCl

Spark - ERROR Executor: Exception in tjava.lang.OutOfMemoryError: unable to create new native thread

如果你的Spark程序在执行过程中报出如下类似的错误: ERROR Executor: Exception in task xxx in stage xxx java.lang.OutOfMemoryError: unable to create new native thread 那么可能性非常大的原因是你当前通过spark-submit或spark-sql启动的程序中开启了过多的进程,以至超过了操作系统对当前用户所允许打开的进程数的上限.确定这个问题的方法是这样的: 首先,通过命令: uli

关于“java.lang.OutOfMemoryError : unable to create new native Thread”的报错问题

转自:https://www.cnblogs.com/flying-tiger/p/5956926.html java.lang.OutOfMemoryError : unable to create new native Thread. 具体截图如下: 在查看日志文件的时候,也有以下出错信息: Error occurred during initialization of VM... 经过百度,找到方法: 既然报"OutOfMemoryError",而且还是" unable