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 ответов

11 просмотров

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта