Чрезвычайно высокие задержки на распределенной карте Hazelcast - PullRequest
0 голосов
/ 06 ноября 2018

Мы используем распределенную карту Hazelcast в нашем проекте, и недавно у нас возникла проблема с чрезвычайно высокой задержкой получения. Мы использовали IMap.get(...) звонки, которые в некоторых случаях занимали часы. После этого инцидента мы перешли на IMap.getAsync(...) API с тайм-аутами, что решает проблему для нас, но мне любопытно, если у кого-нибудь была подобная проблема.

Наша версия Hazelcast - 3.9.0. Во время инцидента у нас hazelcast.operation.call.timeout.millis было установлено 5000, а async-backup-count="3" с read-backup-data="true". У нас также были спорадические всплески использования ЦП (до 100% в течение нескольких минут) на некоторых хостах из-за несвязанной фоновой обработки, которая потенциально может повлиять на Hazelcast.

Единственная подозрительная вещь, которую мы обнаружили в журналах, заключалась в том, что во время инцидента все хосты жаловались на одного конкретного хоста, например:

Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler
WARNING: [hostX]:5702 [dev] [3.9] No Invocation found for call timeout response with callId739863 sent from [hostY]:5702
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler
WARNING: [hostX]:5702 [dev] [3.9] No Invocation found for call timeout response with callId739864 sent from [hostY]:5702
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler
WARNING: [hostX]:5702 [dev] [3.9] No Invocation found for call timeout response with callId739852 sent from [hostY]:5702
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler
WARNING: [hostX]:5702 [dev] [3.9] No Invocation found for call timeout response with callId739870 sent from [hostY]:5702
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler
WARNING: [hostX]:5702 [dev] [3.9] No Invocation found for call timeout response with callId739874 sent from [hostY]:5702
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InboundResponseHandler

В логах hostY:

Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InvocationMonitor
WARNING: [hostY]:5702 [dev] [3.9] MonitorInvocationsTask delayed 14294 ms
Oct 24, 2018 3:53:01 PM com.hazelcast.spi.impl.operationservice.impl.InvocationMonitor
WARNING: [hostY]:5702 [dev] [3.9] BroadcastOperationControlTask delayed 13544 ms

Есть идеи?

1 Ответ

0 голосов
/ 07 ноября 2018

Из журналов hostY кажется, что hostY страдает от пауз в GC. MonitorInvocationsTask планируется запускать каждую секунду, но он говорит, что его выполнение задерживается на 14 секунд. И BroadcastOperationControlTask должен планироваться почти каждую секунду из-за вашей конфигурации (hazelcast.operation.call.timeout.millis / 4 = 1250 ms), но аналогично он задерживается на 13 секунд.

Вы можете убедиться в этом, включив журналы GC. Кроме того, Hazelcast должен периодически печатать HealthMonitor журналов, когда использование памяти и / или ЦП превышает некоторый порог.

...