Я пытаюсь придумать конфигурацию, которая обеспечивала бы установку квоты производителя на основе средней скорости байта производителя. Я сделал тест с кластером из 3 узлов. Тем не менее, topi c был создан с 1 разделом и 1 коэффициентом репликации, чтобы можно было измеритьrate_byte_rate только для 1 брокера (брокера-лидера).
Для идентификатора клиента test_producer_quota установлено значение 20480.
Я использовал kafka-provider-perf-test для проверки пропускной способности и газа.
kafka-producer-perf-test --producer-props bootstrap.servers=SSL://kafka-broker1:6667 \
client.id=test_producer_quota \
--topic quota_test \
--producer.config /myfolder/client.properties \
--record.size 2048 --num-records 4000 --throughput -1
Я ожидал, что клиент производителя узнает о газе и в конечном итоге сгладит запросы, отправленные на маклер. Вместо этого я заметил, что есть альтернативный импульс 98 rec / se c и 21 rec / se c на период более 30 секунд. В течение этого времени средняя задержка медленно продолжала увеличиваться и, наконец, когда она достигает 120000 мс, я начинаю видеть исключение тайм-аута, как показано ниже
org. apache .kafka.common.errors.TimeoutException: Истекает 7 записей для quota_test-0: 120000 мс прошло с момента создания пакета.
Что может быть причиной этой проблемы?
- Производитель истекает время ожидания, когда задержка достигает 120 секунд (по умолчанию value of delivery.timeout.ms)
- Почему производитель не узнает о дросселе и квоте, не замедляет или не откатывает Какие другие конфигурации производителя могли бы помочь решить эту проблему тайм-аута?