gpt4 book ai didi

java - JBOSS EJB 客户端重复出现 "OutOfMemoryError: unable to create new native thread"

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:54 25 4
gpt4 key购买 nike

在 JBOSS EAP 6.4 上调用 EJB 服务时,这个错误经常发生,它总是在 EJBClientContext registerEJBReceiver/unregisterEJBReceiver 上发生。这些方法都将可运行对象提交到名为 ejbClientContextTasksExecutorService 的 CachedThreadPool (Executors.newCachedThreadPool) 中。代码可以在EJBClientContext类里面查看: https://raw.githubusercontent.com/wildfly/jboss-ejb-client/87aef56ab787f57a9508c6e2b0f876066ae464fe/src/main/java/org/jboss/ejb/client/EJBClientContext.java

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

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

nproc > 100000

ulimit -u > 100000

内核.pid_max > 100000

/proc/sys/kernel/threads-max > 150000

我一直在使用以下命令观察整个批处理期间服务器上的线程消耗:

ps -A -o pid,nlwp,cmd

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

最佳答案

尝试分析您的应用程序。如果您使用的是 Oracle JDK,则可以创建一个 flight recordingJMC 分析它.然后,随着时间的推移,您会进行良好的分析,直到发生错误。

又找到一个不错的article .尝试将分析结果与其进行比较。

关于java - JBOSS EJB 客户端重复出现 "OutOfMemoryError: unable to create new native thread",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55532601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com