Рекомендуемые конфигурации для клиентов Apache Kafka
Ниже приведены конфигурации, рекомендуемые для работы с Центрами событий Azure из клиентских приложений Apache Kafka.
Свойства конфигурации клиента Java
Конфигурации производителя и потребителей
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
metadata.max.age.ms |
Около 180000 | < 240000 | Можно снизить, чтобы быстрее получать сведения об изменениях метаданных. |
connections.max.idle.ms |
180000 | < 240000 | Azure закрывает входящий протокол управления передачей (TCP) бездействия > 240 000 мс, что может привести к отправке на мертвые подключения (показано как просроченные пакеты из-за времени ожидания отправки). |
Конфигурации только для производителя
Конфигурации производителя можно найти здесь.
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
max.request.size |
1000 000 | < 1046528 | Служба закрывает подключения, если отправляются запросы размером более 1 046 528 байт. Это значение необходимо изменить и вызвать проблемы в сценариях с высокой пропускной способностью. |
retries |
> 0 | Может потребоваться увеличение delivery.timeout.ms значения, см. документацию. | |
request.timeout.ms |
30000 — 60 000 | > 20000 | Центры событий по умолчанию по умолчанию по умолчанию не менее 20 000 мс. При принятии запросов с более низкими значениями времени ожидания надлежащее поведение клиента не гарантируется. Убедитесь, что параметру request.timeout.ms присвоено рекомендованное значение 60000 или выше, а значение параметра session.timeout.ms — не меньше рекомендуемого значения 30000. Если эти параметры слишком низкие, время ожидания потребителя может быть превышено, что приведет к перераспределению (в результате превышение времени ожидания будет возникать чаще, что приведет к более частому перераспределению и т. д.). |
metadata.max.idle.ms |
180000 | > 5000 | Управляет тем, как долго производитель кэширует метаданные для раздела, который находится в состоянии простоя. Если время, прошедшее с момента последнего выпуска темы, превышает период неактивности ее метаданных, они будут забыты, а при следующей попытке доступа к ним будет отправлен запрос на получение метаданных. |
linger.ms |
> 0 | В сценариях с высокой пропускной способностью значение задержки должно равняться самому высокому допустимому значению, чтобы можно было пользоваться пакетной обработкой. | |
delivery.timeout.ms |
Задается в соответствии с формулой (request.timeout.ms + linger.ms ) * retries . |
||
compression.type |
uncompressed, gzip |
В настоящее время поддерживается только сжатие gzip. |
Конфигурации только для потребителя
Конфигурации потребителя можно найти здесь.
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
heartbeat.interval.ms |
3000 | Значение по умолчанию — 3000, его не следует менять. | |
session.timeout.ms |
30 000 | 6000 — 300 000 | Начните с 30000. Увеличьте значение, если из-за пропущенных пульсов часто производится повторная балансировка. Убедитесь, что параметру request.timeout.ms присвоено рекомендованное значение 60000 или выше, а значение параметра session.timeout.ms — не меньше рекомендуемого значения 30000. Если эти параметры слишком низкие, время ожидания потребителя может быть превышено, что приведет к перераспределению (в результате превышение времени ожидания будет возникать чаще, что приведет к более частому перераспределению и т. д.). |
max.poll.interval.ms |
300000 (по умолчанию) | >session.timeout.ms | Используется для времени ожидания перебаланса, поэтому он не должен быть задан слишком низким. Это значение должно превышать значение session.timeout.ms. |
Свойства конфигурации librdkafka
Основной librdkafka
файл конфигурации (ссылка) содержит расширенные описания свойств, описанных в следующих разделах.
Конфигурации производителя и потребителей
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
socket.keepalive.enable |
true | Необходимо, если подключение должно быть неактивно. Azure закрывает входящий tcp-код бездействия > 240 000 мс. | |
metadata.max.age.ms |
~ 180000 | < 240000 | Можно снизить, чтобы быстрее получать сведения об изменениях метаданных. |
Конфигурации только для производителя
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
retries |
> 0 | Значение по умолчанию — 2147483647. | |
request.timeout.ms |
30000 — 60 000 | > 20000 | Центры событий по умолчанию по умолчанию по умолчанию не менее 20 000 мс. Значение librdkafka по умолчанию — 5000, что может создать проблему. При принятии запросов с более низкими значениями времени ожидания надлежащее поведение клиента не гарантируется. |
partitioner |
consistent_random |
См. документацию по librdkafka. | consistent_random — рекомендуемое значение, используемое по умолчанию. В большинстве случаев пустые ключи и ключи со значением NULL обрабатываются безупречно. |
compression.codec |
none, gzip |
В настоящее время поддерживается только сжатие gzip. |
Конфигурации только для потребителя
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
heartbeat.interval.ms |
3000 | Значение по умолчанию — 3000, его не следует менять. | |
session.timeout.ms |
30 000 | 6000 — 300 000 | Начните с 30000. Увеличьте значение, если из-за пропущенных пульсов часто производится повторная балансировка. |
max.poll.interval.ms |
300000 (по умолчанию) | >session.timeout.ms | Используется для времени ожидания перебаланса, поэтому он не должен быть задан слишком низким. Это значение должно превышать значение session.timeout.ms. |
Дополнительные заметки
Ознакомьтесь со следующей таблицей распространенных сценариев ошибок, связанных с конфигурацией.
Симптомы | Проблема | Решение |
---|---|---|
Сбои фиксации смещения из-за повторной балансировки | Потребитель слишком долго ждет опроса методом poll() между звонками, и служба удаляет его из группы. | У вас есть несколько вариантов:
|
Сетевые исключения при высокой пропускной способности | Если вы используете клиент Java + max.request.size, ваши запросы могут быть слишком большими. | См. приведенные ранее конфигурации Java. |
Следующие шаги
Сведения об ограничениях во всех службах Azure см. в статье Подписка Azure, границы, квоты и ограничения службы.