2015-06-29 4 views
1

У меня есть топология из трех частей, которая имеет серьезные проблемы с задержкой, но у меня возникли проблемы с выяснением того, где.штормовой поиск источника (ов) латентности

Кафка -> дб поиска -> записи Кассандре

чисел от взгляда шторма UI, как это: enter image description here

(я вижу, что болты работают на> 1,0 мощности)

Если латентность процесса для двух болтов составляет ~ 65 мс, почему «полная латентность»> 400 сек? «Неверные» кортежи исходят из тайм-аутов, которые, как я подозреваю, так как значение латентности постоянно увеличивается.

Кортежи подключены через shuffleGrouping.

Cassandra живет на AWS, поэтому в пути могут быть ограничены сети.

У штурмового кластера есть 3 машины. В топологии работают 3 человека.

ответ

0

FWIW - кажется, что значение по умолчанию для TOPOLOGY_MAX_SPOUT_PENDING не ограничено. Я добавил звонок stormConfig.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 500); и покажется, что проблема была устранена. Возможная проблема «громоподобного стада»?


После установки TOPOLOGY_MAX_SPOUT_PENDING до 500: enter image description here

2

Ваша топология имеет несколько проблем:

  1. взгляд на способности к decode_bytes_1 и save_to_cassandra носиками. Оба они превышают 1 (сумма всех ресурсов носителей должна быть меньше 1), а это означает, что вы используете больше ресурсов, чем то, что у вас есть. То есть топология не может справиться с нагрузкой.
  2. TOPOLOGY_MAX_SPOUT_PENDING решит вашу проблему, если пропускная способность кортежей меняется в течение дня. Это, если у вас есть часы заглядывания, и вы будете наверстать упущенное в часы без внимания.
  3. Вам необходимо увеличить количество рабочих машин или оптимизировать код в лотках для рта бутылки (или, возможно, оба). В противном случае вы не сможете обработать все кортежи.
  4. Вы, вероятно, можете улучшить Кассандру стойкую бактерию, вставив в пакетах instread вставных кортежей один на один ...
  5. Я серьезно рекомендую вам всегда установить TOPOLOGY_MAX_SPOUT_PENDING для консервативного значения. Ожидаемый максимальный носик означает максимальное количество неактивных кортежей внутри топологии, помните, что это значение умножается на количество пятен, а кортежи будут тайм-аут (сбой), если они не были подтверждены через 30 секунд после испускания.
  6. И да, ваша проблема связана с таймингами, это именно то, что происходит.
  7. (EDIT), если вы используете среду разработки (или сразу после развертывания топологии), может возникнуть всплеск трафика, генерируемого сообщениями, которые еще не потреблялись носиком; важно, чтобы этот случай не влиял на вашу топологию - вы никогда не знаете, когда вам нужно перезапустить топологию производства или выполнить некоторое обслуживание - если это так, вы можете справиться с ней как временный всплеск трафика - носик должен потреблять все сообщения, созданные в то время, когда топология была отключена - и после некоторого (или нескольких минут) частота входящих кортежей стабилизируется; вы можете справиться с этим с ожидающим параметром max pout (снова прочитайте пункт 2).
  8. Учитывая, что у вас есть 3 узла в вашем кластере, а cpu - использование 0,1, вы можете добавить больше исполнителей на болты.
+0

1. Нагрузка процессора на системы диспетчера составляет <.1 - они в основном работают на холостом ходу. 2. Это был решающий фактор. Установка его на 500 сделала разницу (см. Изображение в моем ответе) 3. См. № 1 4. Оказывается, что кассандра не заботится о пакетных вставках 5. см. # 2 – ethrbunny

+0

@ethrbunny я проверил руководство и фактически представила емкость количество времени, затрачиваемого на болт, а не на использование процессора. Что касается кассандры, у вас все еще есть запах латентности, пакетная вставка может сделать вашу персистор быстрой, что быстрая вставка 1000 * 1 запись * 30 мс или запись 10 * 100 * 100 мс? Вы должны учитывать время, в течение которого пакеты должны путешествовать, подумать о сети и быть подтвержденными. –

+0

@ethrbunny полная латентность этой топологии - это огромное значение, потому что следующий кортеж только вставлен в casandra после того, как предыдущий был вставлен, это вызовет огромную латентность ack. –

Смежные вопросы