Hi
I want to benchmark Kafka, configured such that a message that has been acked by the broker to the producer is guaranteed to have been persisted to disk. I changed the broker settings:
log.flush.interval.messages=1
log.flush.interval.ms=0
(Is this the proper way to do it?)
The impact is very noticeable. Whereas without these settings, the msg/sec rate (1 producer, 1 topic, async, enable.idempotence) was well north of 100k, with above settings it drops to below 5k on this dev box with ssd storage. This huge drop seems to indicate that Kafka is not doing any batch acking (which would allow it to do batch fsyncing).
Is there a way to increase the msg/sec rate given the fsync constraint? It would seem that adding topics/partitions would help in case of a cluster, and the fsync load could be distributed to multiple machines. Is there perhaps also a way to increase the rate per node?
I'm using the latest kafka 2.4.0.
Best regards
Eugen
I want to benchmark Kafka, configured such that a message that has been acked by the broker to the producer is guaranteed to have been persisted to disk. I changed the broker settings:
log.flush.interval.messages=1
log.flush.interval.ms=0
(Is this the proper way to do it?)
The impact is very noticeable. Whereas without these settings, the msg/sec rate (1 producer, 1 topic, async, enable.idempotence) was well north of 100k, with above settings it drops to below 5k on this dev box with ssd storage. This huge drop seems to indicate that Kafka is not doing any batch acking (which would allow it to do batch fsyncing).
Is there a way to increase the msg/sec rate given the fsync constraint? It would seem that adding topics/partitions would help in case of a cluster, and the fsync load could be distributed to multiple machines. Is there perhaps also a way to increase the rate per node?
I'm using the latest kafka 2.4.0.
Best regards
Eugen
Comments
Post a Comment