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)
Haben Sie acks = 1 oder alle für Ihren Produzenten? – dawsaw
@dawsaw Nicht sicher, ist das eine clientseitige Eigenschaft? Kannst du bitte etwas ausarbeiten? – KidCrippler
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