[
https://issues.apache.org/jira/browse/KAFKA-1115?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13811759#comment-13811759
]
Francois Saint-Jacques commented on KAFKA-1115:
-----------------------------------------------
This is not the problem. Even if I change the log level, the construction of
the string passed to the logging subsystem is the root cause, i.e. all calls of
the form "Message %s is... ".format(...) . Scala is not a lazy evaluation
language, the only ways to fix this problem are:
1. Wrap all the trace/debug calls with if (logging.debugEnabled()...) so that
it doesn't get evaluated. This is the lazy way.
or
2. Remove any debug/trace calls in this critical code path. This is clearly the
remnant of `print foo' debugging, it shouldn't be committed to the trunk
branch.
> producer performance affected by trace/debug calls
> --------------------------------------------------
>
> Key: KAFKA-1115
> URL: https://issues.apache.org/jira/browse/KAFKA-1115
> Project: Kafka
> Issue Type: Improvement
> Components: producer
> Affects Versions: 0.8
> Reporter: Francois Saint-Jacques
> Assignee: Francois Saint-Jacques
> Attachments: producer-performance-fix.patch
>
>
> After investigating high CPU usage on some producers in production, we found
> out that a lot of time was passed in string construction for logging of DEBUG
> and TRACE level.
> This patch removes most of the logging calls, on our systems it cuts CPU
> usage down to half of what it used to be.
> Note that this is a significant boost in performance for environment where
> there are thousands of msg/s.
--
This message was sent by Atlassian JIRA
(v6.1#6144)