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

最近的测试需要很长的连接server。这些数据需要达到100W长连接,试client。一个线程来保持连接。查找linuxserver创建者默认3200当多个线程。这个错误将得到“java.lang.OutOfMemoryError: unable to create new native thread。并且,此时整个系统都不能创新新的线程了,不能连接终端,不能运行不论什么命令。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWljbHVuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

由于要保持长连接。全部先改动client保证更大的分配port范围

改动 /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 给限制住了

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-09 06:01:21

JVM截至多少线程可以创建: unable to create new native thread的相关文章

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

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

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 <堆叠大 小>][-

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

HBASE遇到的java.lang.OutOfMemoryError: unable to create new native thread解决方法

简单分享一下,类似问题的解决方法 刚才在某机器上上xxx用户下压测时遇到这个问题,连xxx都进不去了 说明xxx用户下无法创建跟多的线程了(当然root用户没这个问题) 系统能够创建的最大线程数:(MaxProcessMemory - JVMMemory – 系统内存) / (ThreadStackSize) = Number of threads 有两种方式: 减少xxx下的ThreadStackSize 增加xxx下的nproc数量 修改 [[email protected]]$ ulimi