Configurazioni consigliate per i client Apache Kafka
Di seguito sono riportate le configurazioni consigliate per l'uso di Hub eventi di Azure da applicazioni client Apache Kafka.
Proprietà di configurazione client Java
Configurazioni producer e consumer
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
metadata.max.age.ms |
180000 (approssimativo) | < 240000 | È possibile ridurre le modifiche ai metadati prima. |
connections.max.idle.ms |
180000 | < 240000 | Azure chiude l'inattività > TCP in ingresso 240.000 ms, che può comportare l'invio su connessioni non riuscite (illustrato come batch scaduti a causa del timeout di invio). |
Solo configurazioni del produttore
Le configurazioni del produttore sono disponibili qui.
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
max.request.size |
1000000 | < 1046528 | Il servizio chiuderà le connessioni se vengono inviate richieste superiori a 1.046.528 byte. Questo valore deve essere modificato e causerà problemi in scenari di produzione ad alta velocità effettiva. |
retries |
> 0 | Potrebbe essere necessario aumentare delivery.timeout.ms valore, vedere la documentazione. | |
request.timeout.ms |
30000 .. 60000 | > 20000 | Hub eventi verrà predefinito internamente a almeno 20.000 ms. Anche se le richieste con valori di timeout inferiori vengono accettate, il comportamento del client non è garantito. Assicurarsi che il request.timeout.ms sia almeno il valore consigliato di 60000 e il session.timeout.ms sia almeno il valore consigliato di 30000. Avere queste impostazioni troppo basse potrebbe causare timeout del consumer, che quindi causano ribilanciamenti (che quindi causano più timeout, che causano più ribilanciamento e così via). |
metadata.max.idle.ms |
180000 | > 5000 | Controlla quanto tempo il produttore memorizza nella cache i metadati per un argomento inattiva. Se il tempo trascorso dall'ultima produzione di un argomento supera la durata dell'inattività dei metadati, i metadati dell'argomento vengono dimenticati e l'accesso successivo forza una richiesta di recupero dei metadati. |
linger.ms |
> 0 | Per scenari con velocità effettiva elevata, il valore di linger deve essere uguale al valore tolerabile più alto per sfruttare il batch. | |
delivery.timeout.ms |
Impostare in base alla formula (request.timeout.ms + linger.ms ) * retries . |
||
compression.type |
none |
Compressione attualmente non supportata. |
Solo configurazioni consumer
Le configurazioni consumer sono disponibili qui.
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 è il valore predefinito e non deve essere modificato. | |
session.timeout.ms |
30000 | 6000 .. 300000 | Iniziare con 30000, aumentare se si vede frequente ribilanciamento a causa di heartbeat mancanti. Assicurarsi che il request.timeout.ms sia almeno il valore consigliato di 60000 e il session.timeout.ms sia almeno il valore consigliato di 30000. Avere queste impostazioni troppo basse potrebbe causare timeout del consumer, che quindi causano ribilanciamenti (che quindi causano più timeout, che causano più ribilanciamento e così via). |
max.poll.interval.ms |
300000 (impostazione predefinita) | >session.timeout.ms | Usato per il timeout di ribilanciamento, quindi non deve essere impostato troppo basso. Deve essere maggiore di session.timeout.ms. |
proprietà di configurazione librdkafka
Il file di configurazione principale librdkafka
(collegamento) contiene descrizioni estese per le proprietà seguenti.
Configurazioni producer e consumer
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
socket.keepalive.enable |
true | Necessario se la connessione deve essere inattiva. Azure chiuderà l'inattività > TCP in ingresso 240.000 ms. | |
metadata.max.age.ms |
~ 180000 | < 240000 | È possibile ridurre le modifiche ai metadati prima. |
Solo configurazioni del produttore
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
retries |
2 | Il valore predefinito è 2147483647. | |
request.timeout.ms |
30000 .. 60000 | > 20000 | Hub eventi verrà predefinito internamente a almeno 20.000 ms. librdkafka il valore predefinito è 5000, che può essere problematico. Anche se le richieste con valori di timeout inferiori vengono accettate, il comportamento del client non è garantito. |
partitioner |
consistent_random |
Vedere la documentazione di librdkafka | consistent_random è predefinito e migliore. Le chiavi vuote e Null vengono gestite idealmente per la maggior parte dei casi. |
compression.codec |
none |
Compressione attualmente non supportata. |
Solo configurazioni consumer
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 è il valore predefinito e non deve essere modificato. | |
session.timeout.ms |
30000 | 6000 .. 300000 | Iniziare con 30000, aumentare se si verifica un ribilanciamento frequente a causa di heartbeat mancanti. |
max.poll.interval.ms |
300000 (impostazione predefinita) | >session.timeout.ms | Usato per il timeout di ribilanciamento, pertanto non deve essere impostato su un valore troppo basso. Deve essere maggiore di session.timeout.ms. |
Note aggiuntive
Vedere la tabella seguente degli scenari di errore comuni correlati alla configurazione.
Sintomi | Problema | Soluzione |
---|---|---|
Errori di commit offset a causa del ribilanciamento | Il consumer è in attesa troppo lungo tra le chiamate a poll() e il servizio sta allontanando il consumer dal gruppo. | Sono disponibili diverse opzioni:
|
Eccezioni di rete ad alta velocità effettiva | Si usa il client Java + max.request.size predefinito? Le richieste potrebbero essere troppo grandi. | Vedere Configurazioni Java precedenti. |
Passaggi successivi
Vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi per le quote e i limiti di tutti i servizi Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per