2016-06-03 28 views
6

Ho un ambiente kafka che ha 3 brokers e 1 zookeeper. Avevo spinto circa> 20K messaggio nel mio argomento. Apache Storm sta calcolando i dati in argomento che viene aggiunto dal produttore.Il produttore Kafka non è in grado di aggiornare i metadati dopo qualche tempo

Dopo poche ore passavano, mentre sto cercando di produrre messaggi a Kafka, la sua mostra la seguente eccezione

org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms. 

Dopo aver riavviato il server Kafka relativo funzionamento benissimo. ma su production non riesco a riavviare il mio server ogni volta. così qualcuno può aiutarmi a capire il mio problema.

la mia configurazione Kafka sono i seguenti:

prodProperties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,"list of broker"); 
prodProperties.put(ProducerConfig.ACKS_CONFIG, "1"); 
prodProperties.put(ProducerConfig.RETRIES_CONFIG, "3"); 
prodProperties.put(ProducerConfig.LINGER_MS_CONFIG, 5); 
+2

Hai guardato nei registri del server kafka e hai visto qualcosa? –

+0

Non posso aiutarti con Storm, ma con Flink abbiamo avuto problemi, che Flink ha sincronizzato ogni 10ms con Kafka Broker e ha prodotto un carico MOLTO alto sull'argomento __consumer_offset, quindi niente funzionava bene. Controlla i registri e controlla con gli strumenti di monitoraggio quale carico hai sul lato broker. E BTW - l'istanza di sigle di Zookeeper è molto cattiva Idea (TM) - sono necessari almeno 3 per il sistema di produzione. –

risposta

0

Sebbene Kafka sintonizzazione produttore è un argomento molto difficile, posso immaginare che il produttore sta cercando di generare i record più rapidamente di quanto non in grado di trasferire al cluster Kafka.

C'è un'impostazione di produttore buffer.memory che definisce la quantità di memoria che il produttore può utilizzare prima del blocco. Il valore predefinito è 33554432 (33 MB).

Se si aumenta la memoria del produttore, si evita il blocco. Prova valori diversi, ad esempio 100 MB.