HerokuTom CrayfordBenchmark
Apache Kafka 0.10 Evaluating Performance in Distributed Systems
Summary
Testing Apache Kafka 0.10 revealed an apparent 33% throughput decline versus Kafka 0.9, prompting an investigation into whether the regression affected different plans, connection types, message sizes, and workload scales. Heroku’s benchmark system used multiple producer and consumer dynos, while the team applied Brendan Gregg’s USE method to examine resource utilization, saturation, and errors. The diagnosis was network-card saturation: Kafka 0.10 adds an 8-byte timestamp to every message, which at 1.5 million messages per second and replication factor 3 produced 288 Mbps of additional cluster traffic, causing packet drops and retransmits. Reproducing the effect by adding 8 bytes to Kafka 0.9 confirmed the explanation, and the post says most production workloads are unlikely to be affected, though clusters near network limits may be.
Context
Benchmarking Kafka 0.10.0 showed nearly 1 million messages per second compared with 1.5 million for Kafka 0.9 on the same cluster configuration. The investigation sought to determine whether the apparent performance drop was broad or dependent on plan size, producer count, connection security, message size, or other workload parameters.
Approach / What changed
The team ran dozens of benchmark variations, consulted the Kafka community, reviewed related performance-regression discussions, and applied Brendan Gregg’s USE method to inspect resource utilization, saturation, and errors. They traced the problem to network-card saturation caused by Kafka 0.10’s additional per-message timestamp overhead and reproduced it in Kafka 0.9 by adding 8 bytes to messages.
Takeaways
Kafka 0.10’s 8-byte per-message timestamp added 288 Mbps of cluster traffic at 1.5 million messages per second with replication factor 3.
Network-card oversaturation caused packet drops and retransmits, sharply reducing throughput in the benchmark.
The post recommends avoiding network saturation, contributed documentation about the added traffic, and says Kafka 0.9.0.1 remained the recommended production version for Heroku Kafka at the time.
Source and freshness
- Source
- heroku.com
- Published
- Added to Yomu
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.