Рекомендуемые конфигурации для клиентов Apache Kafka
Ниже приведены конфигурации, рекомендуемые для работы с Центрами событий Azure из клиентских приложений Apache Kafka.
Свойства конфигурации клиента Java
Конфигурации производителя и потребителей
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
metadata.max.age.ms |
Около 180000 | < 240000 | Можно снизить, чтобы быстрее получать сведения об изменениях метаданных. |
connections.max.idle.ms |
180000 | < 240000 | Azure закрывает входящие подключения TCP, бездействующие более 240000 мс, что может привести к отправке пакетов с истекшим сроком действия (из-за времени ожидания отправки). |
Конфигурации только для производителя
Конфигурации производителя можно найти здесь.
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
max.request.size |
1000 000 | < 1046528 | Служба будет закрывать подключения при отправлении запросов, размер которых превышает 1046528 байт. Это значение необходимо изменить, оно приведет к проблемам в сценариях с высокой пропускной способностью. |
retries |
> 0 | Возможно, значение delivery.timeout.ms потребуется увеличить, см. документацию. | |
request.timeout.ms |
30000 — 60 000 | > 20000 | По умолчанию система присвоит параметру Центров событий минимальное значение в 20000 мс. При принятии запросов с более низкими значениями времени ожидания надлежащее поведение клиента не гарантируется. Убедитесь, что параметру 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 |
none |
Сжатие в настоящее время не поддерживается. |
Конфигурации только для потребителя
Конфигурации потребителя можно найти здесь.
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
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-соединение, если оно неактивно более 240000 мс. | |
metadata.max.age.ms |
~ 180000 | < 240000 | Можно снизить, чтобы быстрее получать сведения об изменениях метаданных. |
Конфигурации только для производителя
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
retries |
> 0 | Значение по умолчанию — 2147483647. | |
request.timeout.ms |
30000 — 60 000 | > 20000 | По умолчанию система присвоит параметру Центров событий минимальное значение в 20000 мс. Значение librdkafka по умолчанию — 5000, что может создать проблему. При принятии запросов с более низкими значениями времени ожидания надлежащее поведение клиента не гарантируется. |
partitioner |
consistent_random |
См. документацию по librdkafka. | consistent_random — рекомендуемое значение, используемое по умолчанию. В большинстве случаев пустые ключи и ключи со значением NULL обрабатываются безупречно. |
compression.codec |
none |
Сжатие в настоящее время не поддерживается. |
Конфигурации только для потребителя
Свойство | Рекомендуемые значения | Допустимый диапазон | Примечания. |
---|---|---|---|
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, а максимальный размер запросов задан по умолчанию (default max.request.size)? Ваши запросы могут быть слишком большими. | См. приведенные выше конфигурации Java. |
Следующие шаги
Сведения об ограничениях во всех службах Azure см. в статье Подписка Azure, границы, квоты и ограничения службы.