170 похожих чатов

Ребят, кто-нибудь сталкивался с таким? Есть 16 потоков, которые делят один

ReentrantReadWriteLock (fair = true). Они его используют подавляющее количество времени на чтение. Иногда включается запись. Время под локами короткое (меньше миллисекунды).

В основном все работает хорошо, но иногда получение read локов начинает "застревать", иногда на секунду и более. Если снять хип дамп (или тред дамп) в это время, то все потоки будут в TIMED_WAITING и вот таким стек трейсом (самый верх):
"thread-name" daemon prio=5 tid=72 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1079)
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node#778
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1369)
at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.tryLock(ReentrantReadWriteLock.java:882)

Т.е. все 16 потоков не могут взять пустой (специально проверил в хип дампе) лок на чтение.

Профайлинг (itimer режим из async-profiler) во время затупа показывает, что также до 35% времени CPU проводит в этих методах.

Застревают не намертво, какой-то проргесс идет. Потоки обрабатывают некие запросы, throughput во время затупа падает раз в 10, но не до 0.
Происходит это с завидной регулярностью на 9 машинах. Проходит само, но может занять час и более, ну и решается рестартом процесса.
Fedora 33, OpenJDK 11.

Есть идеи, куда копать?

2 ответов

4 просмотра

а что за сервак ? не NUMA случаем?

Думаю, дело в fairness. Пробовали выключать?

Похожие вопросы

Обсуждают сегодня

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта