Weblogic не понижает текущий поток до более низкого приоритета, он всегда завершает текущий поток перед тем, как поднять новый.
Как вы подтверждаете, что текущие потоки ждут 6 - 7 секунд? В идеале возьмите несколько дампов потока в пиковое время (используя kill -3 <pid>
в Unix) и посмотрите, что все эти ожидающие потоки делают?
Я не вызываю эти застрявшие потоки, но на каком-то ресурсе может возникнуть конфликт (обычно виновником является база данных или внешний вызов, такой как веб-служба)
Есть ли у вас сценарий, когда есть какая-то нисходящая система, которую вы вызываете, и иногда эта система не может справиться с пиковой нагрузкой.
Берите 4 или 5 наборов дампов с интервалом в 5 секунд между каждым. таким образом, в конце у вас будет один лог-файл, который требует около 20-25 секунд действия на сервере приложений.
Затем вы должны проверить, хотите ли вы проверить, происходит ли длительная транзакция, все дампы потоков покажут, что определенный идентификатор потока находится на той же строке в трассировке стека Java. Проще говоря, транзакция (скажем, в EJB или базе данных) охватывает несколько дампов потоков и, следовательно, требует дополнительного изучения.
Как часто GC занимает 2 секунды?
Я подозреваю, что из-за разногласий по некоторому пункту, вам кажется, что новые запросы получают приоритет, когда на самом деле они также застряли, ожидая в этом том же пункте.