Многие потоки ожидают при условии и нагрузке на сервер более 100 - PullRequest
1 голос
/ 19 апреля 2019

Слишком много потоков в состоянии ОЖИДАНИЯ в Tomcat. 50% потоков ждет в состоянии

Tomcat 7. Ядро процессора 16. Процессор us82%. Памяти достаточно, 16г свободного места. За полчаса есть только 1 fullgc. Linux sys загружается 50+, 50+, 50+ и 100+ несколько раз. У меня никогда не было ExecutorService или ThreadPool в моем коде.

Демон "catalina-exec-682" prio = 10 tid = 0x00007f530442e800 nid = 0x16f8 ожидание при условии [0x00007f51b9a3a000] java.lang.Thread.State: ОЖИДАНИЕ (парковка) в sun.misc.Unsafe.park (родной метод) - парковка для ожидания <0x000000073168d480> (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) в org.apache.tomcat.util.threads.TaskQueue.take (TaskQueue.java:104) в org.apache.tomcat.util.threads.TaskQueue.take (TaskQueue.java:32) в 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) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) at java.lang.Thread.run (Thread.java:745)

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

демон "catalina-exec-681" prio = 10 tid = 0x00007f530442c800 nid = 0x16f7 ожидание при условии [0x00007f51b9a7b000] java.lang.Thread.State: ОЖИДАНИЕ (парковка) в sun.misc.Unsafe.park (родной метод) - парковка для ожидания <0x000000073168d480> (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) в org.apache.tomcat.util.threads.TaskQueue.take (TaskQueue.java:104) в org.apache.tomcat.util.threads.TaskQueue.take (TaskQueue.java:32) в 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) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) at java.lang.Thread.run (Thread.java:745)

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

Я утверждаю, что нет состояния потоков, ожидающего при условии, все эти потоки созданы tomcat, но 50% ожидают в состоянии.

1 Ответ

0 голосов
/ 22 апреля 2019

Ну, может, потому что им нечего было делать, когда вы проверяли - Мартин Джеймс

Похоже, это пул потоков Tomcat. Они ничего не делают, если их не используют. Вы должны иметь возможность установить размер пула на что-то меньшее, но я не думаю, что это будет иметь значение. - Питер Лори

Спасибо за ваши ответы, все в порядке, в этом нет ничего плохого.

...