Существует ли худшая реализация случая JVM?

Как оказалось, AutoDeleteOnIdle работает точно так, как я думал.

Пока подписка на тему имеет соединение, ее не следует удалять. Неважно, есть ли у вас правила, FalseFilter или нет публикуемых сообщений. Пока у вас есть активное соединение, и вы в настоящее время пытаетесь получать сообщения, используя OnMessage (), OnMessageAsync (), Receive () или ReceiveAsync (), тогда подписка не будет свободна и не будет удалена [ 111] .

Однако наши подписки на темы служебной шины все еще исчезали из некоторых тем. Они все еще были удалены во время AutoDeleteOnIdle. Мне никогда не удавалось воспроизвести проблему на моей коробке разработчика.

У нас была проблема в нашей производственной среде в последние несколько месяцев, и она только усугубилась. Мы предполагали, что делаем что-то не так.

Как это случилось, Microsoft подтвердила мне сегодня, что их западная область США 2 имеет эту проблему. Другие регионы не затронуты. MS не подтвердил, почему это происходит, как долго это происходит или сколько времени потребуется, чтобы исправить это.

Это последнее, что я мог себе представить. Я предположил, что делал что-то не так.

Больше всего беспокоит то, как долго эта проблема существовала, пока Microsoft ее не обнаружила.

Надеюсь, скоро это будет исправлено.

Если кто-то еще сталкивается с исчезновением или удалением подписок служебной шины, несмотря на активность, я бы рекомендовал создать тест, как и я. Если тест не работает должным образом, обратитесь в Microsoft.

9
задан Inge 16 February 2009 в 09:43
поделиться

4 ответа

Вы могли попытаться использовать Терракоту для кластеризации программы. Это невероятно неумолимо вокруг неправильной синхронизации (который станет очевидным даже только с одним узлом в кластере). Это - большой вопрос: я часто хотел точно эту способность - я удивлен, что в стандартном JRE нет переключателя -XXJMMExtreme

Терракота является открытым исходным кодом и свободный для основного продукта.

2
ответ дан 3 November 2019 в 08:21
поделиться

Это могло бы помочь: http://javapathfinder.sourceforge.net/

1
ответ дан 3 November 2019 в 08:21
поделиться

Я не знаю ни о каком VM, который гарантирует худшее поведение случая все время, которое, кажется, то, что Вы просите. Ситуация, что Вы описываете, может произойти с Sun VMs (а также многие другие), но только из-за кэширования проблем. Я не знаком с VM, который намеренно делает это все время.

0
ответ дан 3 November 2019 в 08:21
поделиться

Существует много путей, которые могли инициировать ошибку параллелизма.

  • Загрузите свое приложение в значительно большее количество потоков, чем Вы обычно ожидали бы. Удостоверьтесь, что этого более чем достаточно для получения 99% + ЦП.
  • Запустите свою программу с включенным профилировщиком или отключенный JIT. Это изменяет поведение синхронизации Вашего приложения.
  • Протестируйте и Java 5 и Java 6 (Это является часто самым простым и лучший способ найти несколько ошибок), я не нашел ошибку с помощью Java 7, который не появился в 5/6.

Для худшего случая JVM попробуйте мобильный телефон. (Ваше приложение, вероятно, не будет работать вообще), ;)

0
ответ дан 3 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

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