Узел Apache Ignite сегментирован

Время от времени я продолжаю сегментировать узлы. Это происходит в кластере с ~ 40 узлами - это происходит только на одном узле за раз. Несколько раз это происходило во время тяжелой работы по сборке мусора. С другой стороны, я видел, что ведется аналогичная тяжелая работа с GC, и ни один узел не был сегментирован. Я настроил тайм-аут обнаружения сбоя, чтобы он был больше, чем максимальный сборщик мусора, который у меня был, но это не помогло - время ожидания сбоя почти в 2 раза больше, чем максимальное количество сборщиков мусора. Как я могу понять, действительно ли это проблемы с GC или сетью? Я сомневаюсь, что это связано с сетью, так как другие узлы тоже потерпят неудачу. Когда процесс перезапускается, он работает нормально, поэтому я бы исключил проблемы с сетью. Где я могу посмотреть код, который производит EVT_NODE_SEGMENTED? Я отладил объект IgniteConfiguration и увидел, что segResolvers пустые / пустые, поэтому я понятия не имею, где было опубликовано событие.

Используется обнаружение на основе S3, не уверен, что здесь имеет значение (ignite 1.9).

Интересно, при каких условиях производится такое мероприятие? Не удается подключиться к большинству других узлов или ко всем?


person Bart    schedule 26.09.2017    source источник
comment
Настроены ли у вас другие тайм-ауты? Я имею в виду networkTimeout, connectTimeout и т. Д. Также будет полезно взглянуть на вашу конфигурацию и журналы со всех узлов.   -  person Evgenii Zhuravlev    schedule 26.09.2017
comment
Я настроил только failDetectionTimeout и slowClientQueueLimit. Иногда я вижу предупреждения, связанные с socketWriteTimeout - что истек тайм-аут, и мне, вероятно, следует его увеличить.   -  person Bart    schedule 26.09.2017
comment
Журналы всех остальных узлов содержат запись о том, что конкретный узел НЕ ВЫПОЛНЕН. [disco-event-worker-#28%null%] WARN o.a.i.i.m.d.GridDiscoveryManager - Node FAILED: TcpDiscoveryNode [id=6d74ee33-0068-4e4f-8e67-b8f2a8bca05b, addrs=[0:0:0:0:0:0:0:1%lo, 10.50.9.176, 127.0.0.1], sockAddrs=[/0:0:0:0:0:0:0:1%lo:47500, /127.0.0.1:47500, ip-10-50-9-176.ec2.internal/10.50.9.176:47500], discPort=47500, order=74, intOrder=57, lastExchangeTime=1506065144854, loc=false, ver=1.9.0#20170302-sha1:a8169d0a, isClient=false]   -  person Bart    schedule 27.09.2017
comment
Находясь на умершем узле, я могу найти [tcp-disco-msg-worker-#2%null%] WARN o.a.i.s.d.tcp.TcpDiscoverySpi - Node is out of topology (probably, due to short-time network problems).   -  person Bart    schedule 27.09.2017


Ответы (1)


Это событие происходит, когда узел отключается и не может подключиться обратно, см. ClientImpl.java и ServerImpl.java

посмотрите журналы на сегментированном узле, это должно быть что-то вроде сообщения Node is out of topology (probably, due to short-time network problems, чтобы вы могли выяснить точную проблему.

person Konstantin    schedule 27.09.2017
comment
Спасибо, смотрю код прямо сейчас. Просто подумайте, если все другие узлы считают этот узел мертвым, а сама JVM жива, это означает, что ignite не ответил на некоторые проверки пульса или около того. Если это не проблема сети, значит, ящик был очень занят, чтобы не обрабатывать эти сообщения. Насколько я понимаю, таймаут failureDetection относится к сердцебиениям, и в моем случае он довольно большой - есть идеи, что еще я должен проверить? - person Bart; 27.09.2017
comment
Может ли это быть org.apache.ignite.spi.discovery.tcp.ServerImpl.RingMessageWorker.checkHeartbeatsReceiving that produces TcpDiscoveryStatusCheckMessage, из-за которого узел будет чувствовать, что он сегментирован? - person Bart; 27.09.2017