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 | Può essere abbassato per raccogliere le modifiche ai metadati prima. |
connections.max.idle.ms |
180000 | < 240000 | Azure chiude il protocollo TCP (Transmission Control Protocol) in ingresso inattivo > 240.000 ms, che può comportare l'invio su connessioni non recapitabili (come batch scaduti a causa del timeout di invio). |
Solo configurazioni producer
Le configurazioni del producer sono disponibili qui.
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
max.request.size |
1000000 | < 1046528 | Il servizio chiude le connessioni se vengono inviate richieste superiori a 1.046.528 byte. Questo valore deve essere modificato e causa problemi in scenari di produzione a velocità effettiva elevata. |
retries |
> 0 | Potrebbe essere necessario aumentare delivery.timeout.ms valore, vedere la documentazione. | |
request.timeout.ms |
30000 .. 60000 | > 20000 | L'impostazione predefinita di Hub eventi è di 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 che il session.timeout.ms sia almeno il valore consigliato di 30000. La presenza di queste impostazioni troppo bassa potrebbe causare timeout del consumer, che causano quindi ribilanciamenti (che causano quindi più timeout, che causano un maggiore ribilanciamento e così via). |
metadata.max.idle.ms |
180000 | > 5000 | Controlla per quanto tempo il producer memorizza nella cache i metadati per un argomento inattiva. Se il tempo trascorso dall'ultima produzione di un argomento supera la durata di inattività dei metadati, i metadati dell'argomento vengono dimenticati e l'accesso successivo forza una richiesta di recupero dei metadati. |
linger.ms |
> 0 | Per gli scenari con velocità effettiva elevata, il valore di linger deve essere uguale al valore tollerabile più alto per sfruttare i vantaggi dell'invio in batch. | |
delivery.timeout.ms |
Impostare in base alla formula (request.timeout.ms + linger.ms ) * retries . |
||
compression.type |
none, gzip |
Attualmente è supportata solo la compressione gzip. |
Solo configurazioni consumer
Le configurazioni dei 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 riscontra un ribilanciamento frequente 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. La presenza di queste impostazioni troppo bassa potrebbe causare timeout del consumer, che causano quindi ribilanciamenti (che causano quindi più timeout, che causano un maggiore 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à descritte nelle sezioni seguenti.
Configurazioni producer e consumer
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
socket.keepalive.enable |
true | Necessario se si prevede che la connessione sia inattiva. Azure chiude l'inattività > TCP in ingresso 240.000 ms. | |
metadata.max.age.ms |
~ 180000 | < 240000 | Può essere abbassato per raccogliere le modifiche ai metadati prima. |
Solo configurazioni producer
Proprietà | Valori consigliati | Intervallo consentito | Note |
---|---|---|---|
retries |
> 0 | Il valore predefinito è 2147483647. | |
request.timeout.ms |
30000 .. 60000 | > 20000 | L'impostazione predefinita di Hub eventi è di 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, gzip |
Attualmente è supportata solo la compressione gzip. |
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 riscontra un ribilanciamento frequente a causa di heartbeat mancanti. |
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. |
Note aggiuntive
Controllare la tabella seguente degli scenari di errore comuni correlati alla configurazione.
Sintomi | Problema | Soluzione |
---|---|---|
Errori di commit di offset a causa del ribilanciamento | Il consumer è in attesa troppo lungo tra le chiamate a poll() e il servizio sta avviando l'utente fuori dal gruppo. | Sono disponibili diverse opzioni:
|
Eccezioni di rete con velocità effettiva elevata | Se si usa il client Java + max.request.size predefinito, le richieste potrebbero essere troppo grandi. | Vedere Configurazioni Java menzionate in precedenza. |
Passaggi successivi
Vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi per le quote e i limiti di tutti i servizi Azure.