Apache Storm: KafkaSpout имеет много неудачных кортежей из-за тайм-аута - PullRequest
0 голосов
/ 23 ноября 2018

В моей топологии учета времени в окне процесса скорость ввода составляет 2000 туплей / с.Размер окна моего count_bolt составляет 3 с и 1 с лагом.Из пользовательского интерфейса видно, что существует большое количество неудачных кортежей.При просмотре журналов, причиной сбоя кортежа является тайм-аут.Я также установил TOPOLOGY_MAX_SPOUT_PENDING на 10000 , topology.message.timeout.secs на 60. И в соответствии с двумя параметрами Capacity и Execute latency на рисунке параллельность болта должна быть достаточной.

Q: Как настроить параметры?Например, TOPOLOGY_MAX_SPOUT_PENDINGtopology.message.timeout.secs или что-то еще.

Это изображение моего штормового интерфейса: штормовый интерфейс

1 Ответ

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

Я бы начал с понижения topology.max.spout.pending.Если у вас есть топология, которая бесполезно обрабатывает уже истекшие тайм-ауты, вам будет проще определить, где находится ваше узкое место.

Имейте в виду, что задержка емкости / выполнения учитывает только то, сколько временипотрачено в execute за каждый кортеж.

Насколько я помню, болт Кафки не проверяет кортежи до того, как он выйдет execute, но вместо этого доставляет кортеж производителю и фиксирует кортеж с помощью обратного вызова от производителя, что может произойти после executeвозвращается.В результате вы не увидите фактического времени, потраченного на обработку кортежей в болте Кафки, отраженного в задержке производительности / выполнения.Вы можете видеть фактическое время между достижением execute кортежа и задержкой кортежа в процессе, которое довольно велико.

Задержка вашего процесса count_bolt также высока, поэтому посмотрите,каждый также буферизует кортежи перед тем, как их взломать.

...