#cassandra #gossip
#кассандра #сплетни
Вопрос:
Текущая настройка, cassandra 2.2.5, gossip составляет 1 секунду по умолчанию, а пороговое значение phi равно 8. Проблема, с которой я сталкиваюсь, — это всплески в подсказках. И одна из причин, по которой подсказки увеличиваются, заключается в том, что узел помечен (сплетни не сообщали о пороговом значении phi).
Я прочитал одну статью, где говорится, что пороговое значение phi, равное 8, соответствует 18 секундам, здесь или там будет несколько секунд. Теперь мне нужно понять, в чем причина, что блокирует сплетни для общения в течение 18 секунд. Какой контрольный список необходимо выполнить, чтобы сплетни могли обмениваться данными?
Ответ №1:
-
Re: «Как работает протокол сплетен cassandra и phi_threshold?»: Phi аппроксимируется как:
phi = (tnow - tLast) / mean
и узел помечается, когдаphi > phi_threshold / 0.434
. Для ваших настроек (и при условии, что среднее значение равно 1 [как в узле, который обычно получает сердцебиение с интервалом в 1 секунду]) узел будет помечен, если мы не получали от него никаких сердцебиений в течение8 / 0.434 = 18.42
нескольких секунд. Документ, документирующий алгоритм, можно найти здесь . -
Re: «Каков контрольный список, который необходимо выполнить, чтобы сплетни могли общаться?»: для меня есть несколько вещей:
- сеть: сообщения сплетен отбрасываются или порт сплетен (7000/7001) блокируется;
- сами узлы: узлы заняты / не отвечают (т. Е. Выполняют GC, Выполняют некоторые операции с большой нагрузкой), поэтому они не могут отправлять какие-либо / много сообщений о сплетнях.
Комментарии:
1. Можно настроить Gossip для использования другого порта?
2. Это значение
storage_port
конфигурации. Для меня было бы разумнее открыть порт 7000 в вашем брандмауэре перед изменением значения.3. У нас открыто 7000, меня беспокоит то, что из-за перегрузки порта хранения сообщения о сплетнях не передаются, и это заставляет полагать, что другие узлы считают, что этот узел не работает, и в результате создается много подсказок. Итак, я подумал, что если gossip сможет работать на другом порту, это упростит задачу.
4. Я сомневаюсь, что изменение порта будет иметь большое значение, это будет тот же трафик. Или, может быть, я неправильно понимаю, что вы подразумеваете под перегрузкой. Кроме того, когда вы говорите
hints goes up
, какая это метрика?TotalHintsInProgress
?5. Да, порт 7000 используется для любого обмена данными между узлами C * (сплетни, потоковая передача данных, координация, …). Изменение значения
storage_port
приведет не только к тому, что трафик сплетен будет передаваться на этот другой порт, это просто означает, что весь трафик обмена сообщениями между узлами C * происходит сейчас на этом другом порту.