Эта ошибка часто возникает при вызове службы EJB в JBOSS EAP 6.4 и всегда происходит в EJBClientContext registerEJBReceiver / unregisterEJBReceiver. Оба эти метода передают исполняемый файл в CachedThreadPool (Executors.newCachedThreadPool) с именем ejbClientContextTasksExecutorService.
Код можно просмотреть внутри класса EJBClientContext:
https://raw.githubusercontent.com/wildfly/jboss-ejb-client/87aef56ab787f57a9508c6e2b0f876066ae464fe/src/main/java/org/jboss/ejb/client/EJBClientContext.java
У меня есть клиентское приложение JBOSS, которое представляет собой пакет, который создает фиксированное число из 20 потоков (с Executors.newCachedThreadPool), но каждая задача вызывает удаленный объект EJB, который использует CachedThreadPool EJBClientContext.
Число потоков, запущенных внутри CachedThreadPool EJBClientContext, неизвестно, но я проверил некоторые ограничения ОС, которые кажутся более чем достаточными:
nproc> 100000
ulimit -u> 100000
kernel.pid_max> 100000
/ proc / sys / kernel / threads-max> 150000
Я наблюдал за потреблением потоков на сервере в течение всего времени выполнения пакета с помощью следующей команды:
ps -A -o pid,nlwp,cmd
Количество потоков на процесс остается довольно низким (максимум 100 потоков на процесс, для 2 или 3 процессов одновременно).