16 потоков ожидают такой же блокировки - PullRequest
0 голосов
/ 26 апреля 2018

У меня проблема с сервером Glassfish 3. Журнал выкидывает сообщения

java.util.concurrent.RejectedExecutionException: очередь задач пула потоков заполнена, ограничение: 256

Я сделал пару дампов потоков и обнаружил, что 16 потоков ожидают такой же блокировки, например:

"__ejb-thread-pool1" демон prio = 6 tid = 0x39657c00 nid = 0x1c08 в состоянии ожидания [0x3297f000] java.lang.Thread.State: ОЖИДАНИЕ (парковка) at sun.misc.Unsafe.park (родной метод) - парковка для ожидания <0x117b2cb0> (java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) в java.util.concurrent.locks.LockSupport.park (LockSupport.java:186) в java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2043) в java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) в java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1068) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1130) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) at java.lang.Thread.run (Thread.java:724)

Заблокированные собственные синхронизаторы: - Нет

"__ejb-thread-pool2" демон prio = 6 tid = 0x38408c00 nid = 0x1a3c, ожидание при условии [0x3ad3f000] java.lang.Thread.State: ОЖИДАНИЕ (парковка) at sun.misc.Unsafe.park (родной метод) - парковка для ожидания <0x117b2cb0> (java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) в java.util.concurrent.locks.LockSupport.park (LockSupport.java:186) в java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2043) в java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442) в java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1068) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1130) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) at java.lang.Thread.run (Thread.java:724)

Заблокированные собственные синхронизаторы: - Никто ...

это нормально? Я думал, что собираюсь найти поток, владеющий блокировкой в ​​дампе потока, но это не так. Пожалуйста, помогите .. Я новичок в анализе потоков.

1 Ответ

0 голосов
/ 27 апреля 2018

Если в какой-либо службе исполнителя 16 тадов ничего не делают, то да, вполне нормально, что все они ждут, чтобы что-то показать в очереди задач.

Отклоненные исполнения, скорее всего, произошли в другой момент, чем при создании снимка потоков. Это означает только то, что количество отправленных сообщений возросло, а очередь была переполнена ранее.

Осторожно, эти отклоненные казни могут даже не относиться к службе исполнения, которую вы просматриваете. Это зависит от того, сколько других служб исполнителей есть в других местах.

...