-
Notifications
You must be signed in to change notification settings - Fork 589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Imbalanced kafka source actors' throughput when running nexmark benchmark #5214
Comments
Is the throughput able to be automatically synced with back pressure? Note that the current bound of the connector message buffer of 512 chunks is too large.
|
Some more context
But both Every actor (with its corresponding source) should be on its own. |
Should it be applied to NexMark source only or all kinds of sources? |
Currently, it does not block doing benchmark on NexMark sources as the total throughput aggregated from all the source actors is normal, |
This issue has been open for 60 days with no activity. Could you please update the status? Feel free to continue discussion or close as not planned. |
Will the situation be better after #6170? I'd like to try it out. |
The setting I tested is a single-node setting, so there should be no |
That's weird. 😕 |
No worries, let me track this issue manually when we have the performance dashboard. So push to the release where performance dashboard is in place. |
Add a configurable parameter to limit the source throughput in terms of bytes. This parameter may or may not(so not go into doc and release notes this time) be intended to be used by public users at the moment. It is convenient for people to test resource utilization/performance for a fixed input throughput.(https://redpanda.com/blog/redpanda-vs-kafka-performance-benchmark#:~:text=3.2%20under%20workloads%20(-,up%20to%201GB/sec,-)%20that%20are%20common) Otherwise, people have to always generate events by some source generators on the fly to Kafka/Redpanda at exactly the throughput you want, which may not be achievable and depends on many other factors. Instead, we can pre-generate a lot and then limit the source throughput stably. Also, it may be a workaround solution for #5214. Approved-By: tabVersion
Related: #8451 (comment) |
Per some discussions with @liurenjie1024 and @hzxa21, I tend to think that this is an issue of Kafka (server or client, both possible) when the workload is heavy. 😟
I'll keep investigating if I get a new idea, but I guess we need some metrics of the Kafka cluster in order to make things clearer. 🤔 |
Yes. I also suspected that the bottleneck between Kafka and the source leads to this issue. But there's another remaining problem of why there's the imbalanced performance for different partitions under disk throughput. 😄 Guess it's caused by the internal implementation of Kafka, which needs further investigation. |
But the weird thing is that if looking at the history of q2, it is less severe than q0 The good news is that q2 can achieve 1M rows/s if this phenomenon does not happen. And also the client of Kafka since Flink seems not to suffer from the same problem. It uses Java native client while rdkafka is an independent implementation. |
I took a quick look and found that this happens randomly for all queries that reach the throughput of around 800k rows/s, like q0 q1 q3 q10 q22. All imbalances occur when the |
Can we get the split distribution of each actor? may be we can see the information from the logs. |
The splits are assigned equally. See the legends of "Source Throughput Per Partition". 🤔 |
This is a simple Nexmark q10 query with 12 parallelism on a single computing node with 16 CPU.
The number of records in each Kafka partition:
The throughput of each source connector:
If the speed of source connectors does not match with each other,
and if the job has event time and watermark,
then the job will probably throw away more events than usual
because one partition may make the watermark progress quickly
and thus other partitions' events get discarded more aggressively.
Some random ideas:
throttle some source actors by considering both the current throughput and the value of the event timestamp.
The text was updated successfully, but these errors were encountered: