[ 
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)

Reply via email to