Это круговой тупик или круговое ожидание?
Я использую микросервис Restful Java с JProfiler, в то время как отправляю несколько запросов с помощью JMeter. Я вижу, что есть много заблокированных тем. Микросервис использует Spring, SpringBoot. Когда отправляются несколько запросов, как-то возникают проблемы.
В инструменте JProfiler я вижу:
- После того, как я прочитал: Круговой тупик, Обедающие философы, я думаю, что есть Круговой тупик. Это правильно?
- В чем разница между тупиковым и круговым тупиком? После того, как я немного поработал в интернете, я вижу другую концепцию, Circular Wait. Как насчет циркулярного ожидания?
- Если вы посмотрите разделы "История монитора" и "Обзор", вы увидите множество заблокированных потоков, а также поток ожидает завершения другого потока. Проблема в классе ReentrantLock.NonfairSync. Но если вы посмотрите на Thread Dump, вы увидите, что потоки находятся в состоянии Waiting, а в верхней части stacktrace вы увидите sun.misc.Unsafe.park. С помощью методов park и unpark реализовано Thread Locks. Вы знаете, что это может быть?
- Может быть проблема с библиотекой com.fasterxml снова? Джексон проект
Спасибо
1 ответ
После того, как я прочитал: Круговой тупик, Обедающие философы, я думаю, что есть Круговой тупик. Это правильно?
Невозможно сказать, основываясь на доказательствах.
В чем разница между тупиковым и круговым тупиком?
Я никогда раньше не видел термин циклический тупик, но в контексте этой статьи "циклический", кажется, означает, что существует более двух заблокированных потоков. На мой взгляд, это не особо полезное различие.
После того, как я немного поработал в интернете, я вижу другую концепцию, Circular Wait. Как насчет циркулярного ожидания?
Я нашел этот термин на странице тупика Википедии. В этом контексте это относится к любой ситуации, когда у вас есть N агентов (например, потоков) от A1 до AN и:
- А1 ждет А2
- А2 ждет А3
- ...
- AN ждет A1
создание "круга" или петли в зависимостях. Обратите внимание, что N
может быть меньше 2. (Это ясно объяснено на странице Википедии.)
С помощью методов park и unpark реализовано Thread Locks. Вы знаете, что это может быть?
Именно так в JVM реализованы блокировки и ожидание.
Может быть проблема с
com.fasterxml.jackson
опять библиотека?
Это возможно Также возможно, что есть проблема с тем, как вы используете библиотеку. Однако это предположение. Недостаточно доказательств, чтобы сказать, в чем проблема, из предоставленной вами информации.
Я советую вам прекратить поиск ответов. Вместо этого наденьте свою задумчивую шляпу и начните читать код и javadocs.
Если бы я догадался, у вас было бы несколько потоков, пытающихся совместно использовать какой-либо объект синтаксического анализатора XML, где этот объект не предназначен для совместного использования.