Это круговой тупик или круговое ожидание?

Я использую микросервис 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, где этот объект не предназначен для совместного использования.

Другие вопросы по тегам