Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 经常性;OutOfMemoryError:无法创建新的本机线程;使用jbossejb客户端_Java_Linux_Multithreading_Jboss - Fatal编程技术网

Java 经常性;OutOfMemoryError:无法创建新的本机线程;使用jbossejb客户端

Java 经常性;OutOfMemoryError:无法创建新的本机线程;使用jbossejb客户端,java,linux,multithreading,jboss,Java,Linux,Multithreading,Jboss,在JBOSS EAP 6.4上调用EJB服务时经常发生此错误,并且它总是发生在EJBClient上下文registerEJBReceiver/unregisterEJBReceiver上。这两个方法都将runnable提交到名为EJBClient ContextTasksExecutorService的CachedThreadPool(Executors.newCachedThreadPool)中。 可以在类EJBClient上下文中查看代码: 我有一个JBOSS客户端应用程序,它是一个创建固

在JBOSS EAP 6.4上调用EJB服务时经常发生此错误,并且它总是发生在EJBClient上下文registerEJBReceiver/unregisterEJBReceiver上。这两个方法都将runnable提交到名为EJBClient ContextTasksExecutorService的CachedThreadPool(Executors.newCachedThreadPool)中。 可以在类EJBClient上下文中查看代码:

我有一个JBOSS客户端应用程序,它是一个创建固定数量的20个线程(带有Executors.newCachedThreadPool)的批处理程序,但每个任务都调用一个使用EJBClient的CachedThreadPool的EJB远程对象

EJBClientContext的CachedThreadPool中运行的线程数未知,但我检查了一些操作系统限制,这些限制似乎已经足够了:

nproc>100000

ulimit-u>100000

kernel.pid_max>100000

/proc/sys/kernel/threads最大值>150000

在批处理的整个过程中,我一直在使用以下命令监视服务器上的线程消耗:

ps -A -o pid,nlwp,cmd

每个进程的线程数仍然很低(每个进程最多100个线程,同时有2个或3个进程)。

尝试分析您的应用程序。如果您使用的是OracleJDK,您可以创建一个分析它的工具。然后,随着时间的推移,您可以进行很好的分析,直到出现错误

也找到了一个好的。试着将分析结果与它进行比较