Philip Nee created KAFKA-18376: ---------------------------------- Summary: High CPU load when AsyncKafkaConsumer uses a small max poll value Key: KAFKA-18376 URL: https://issues.apache.org/jira/browse/KAFKA-18376 Project: Kafka Issue Type: Bug Components: clients, consumer Reporter: Philip Nee Assignee: Philip Nee
We stress tested the AsyncConsumer using maxPoll = 5 and observed abnormally high CPU usage. Under normal usage (with defaults), the consumers on average use around 10% of the CPU with 20mb/s byte rate, which is aligned with the ClassicKafkaConsumer. As we tested the consumer with a small max poll value, we observed the CPU usage spikes to > 50% while the classic consumer stays at around 10%. _note: percentage of CPU usage may depend on the running pod hardware._ The profiling results shows two major contributors to the CPU cycles # AsyncKafkaConsumer.updateFetchPosition (addAndGet & new CheckAndUpdatePositionEvent()) # AbstractFetch.fetchablePartitions from the fetchrequestmanager for AsyncKafkaConsumer.updateFetchPosition - It seems like * UUID generation can become quite expensive. This is particularly noticeable when creating large number of events * ConsumerUtils.getResult, which uses future.get() also consumes quite a bit of CPU cycles for fetchablePartitions, FetchBuffer.bufferedPartitions which uses Java ConcurrentLinkedQueue.forEach also consumes quite a bit of CPUs. -- This message was sent by Atlassian Jira (v8.20.10#820010)