4

Ich habe eine einzige Instanz von kafka auf einer VM mit 8 Kernen und 32 GB RAM installiert.Kafka verbraucht nicht alle produzierten Daten

Ich schreibe (produzieren) von 10 verschiedenen Maschinen und konsumieren von einer Maschine, die alle im selben Netzwerk sind.

Die Größe der Daten, die ich produziere, ist ~ 35MBit/s.

Aus irgendeinem Grund kann ich die meiste Zeit nicht mehr als ~ 10MBit/s verbrauchen (für begrenzte Zeit habe ich es geschafft, alle produzierten Daten zu konsumieren), obwohl der Kafka UND die Consumer-Server meistens sind Leerlauf (daher glaube ich nicht, dass es ein Aufbewahrungsproblem ist).

Könnte Kafka einige der produzierten Daten ignorieren?

Einige Parameterwerte, die für die Analyse nützlich sein könnten:

num.network.threads=32 
num.io.threads=16 
message.max.bytes=2147483647 
num.partitions=10 
log.retention.ms=120000 (2 minutes) 
+0

Haben Sie acks = 1 oder alle für Ihren Produzenten? – dawsaw

+0

@dawsaw Nicht sicher, ist das eine clientseitige Eigenschaft? Kannst du bitte etwas ausarbeiten? – KidCrippler

+1

Ja, es ist auf dem Produzenten-Client. Sie müssen acks = all haben, um sicherzustellen, dass der Broker die Nachricht gesehen hat. acks = 1 garantiert, dass ein Makler es gesehen hat, was wahrscheinlich das Beste ist, was Sie in Ihrem Fall tun können. Der Code für den Produzenten sollte auch Fälle behandeln, in denen keine Bestätigung empfangen wird, um Sie auf fehlende Daten hinzuweisen und/oder den Sendeversuch erneut zu versuchen. – dawsaw

Antwort

0

Sie ist Retentionszeit viel zu niedrig. Wenn Ihr Verbraucher jemals mehr als 2 Minuten hinter einen der 10 Produzenten fällt, gehen die Nachrichten verloren. Probieren Sie 24 Stunden oder mindestens so viel Speicherplatz aus, wie Sie benötigen. Die Standard-Aufbewahrungsfrist beträgt 7 Tage. Wenn Sie Nachrichten über einen längeren Zeitraum aufbewahren, können Sie auch debuggen, wenn sie alle erfolgreich in das Thema einsteigen.

+0

Ich versuchte, die Retentionszeit auf 1 Stunde (~ 16 GB Daten) ohne Erfolg zu erhöhen. Nach einer Stunde begann Kafka zu kämpfen. Das Gleiche passierte, als ich es vorher mit 10 Minuten Wiederholung versuchte - es funktionierte für 10 Minuten und begann dann zu kämpfen. – KidCrippler

+1

Es klingt also so, als ob Ihr Engpass nur erscheint, wenn Kafka abgelaufene Nachrichten löscht. Ist die Datei log.cleanup.policy für das Thema, das Sie verwenden, kompakt oder löschen? Welche Art von Speicher verwenden Sie? Könnten Sie die IO-Kapazität der Festplatte überschreiten, wenn Sie gleichzeitig Protokollsegmente löschen und neue Segmente gleichzeitig schreiben. Ihre Preise sind nicht sehr hoch, aber wenn die Festplatte sehr langsam ist, könnte dies das Problem verursachen. –

Verwandte Themen