[ 
https://issues.apache.org/jira/browse/KAFKA-1351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14243223#comment-14243223
 ] 

Fabian Lange commented on KAFKA-1351:
-------------------------------------

Hi,
I was about to create a new issue, but figured this might host the comment 
almost as good.
As William outlined here: 
http://www.autoletics.com/posts/quick-performance-hotspot-analysis-apache-kafka
the Log.append function 
(https://github.com/apache/kafka/blob/7847e9c703f3a0b70519666cdb8a6e4c8e37c3a7/core/src/main/scala/kafka/log/Log.scala#L230)
is by far the biggest contributor to response time.
There are a few reasons for this:
A) it has a long synchronized block. I do not know much about the code, so at 
first glance I do not see much of an option to fix something
B) it has a trace logging call. Not sure if that trace call needs to be in 
synchronized though.

The trace call is implemented by
https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/utils/Logging.scala#L34

As you might notice this does doe a slow String.format for trace. a log level 
which is very likely to be off.
The above mentioned Log4j2 pattern would help there.

However there are more options, like implemented by typesafe:
https://github.com/typesafehub/scalalogging/tree/master/scalalogging-log4j/src/main/scala/com/typesafe/scalalogging/log4j
they use a macro, which would transform the code so that the actual string 
format would be moved into the log level checking. I think thats quite nifty, 
but maybe too much work to integrate.

So if you would check out that trace call, I would appreciate that :)

> String.format is very expensive in Scala
> ----------------------------------------
>
>                 Key: KAFKA-1351
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1351
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.7.2, 0.8.0, 0.8.1
>            Reporter: Neha Narkhede
>              Labels: newbie
>             Fix For: 0.8.3
>
>         Attachments: KAFKA-1351.patch, KAFKA-1351_2014-04-07_18:02:18.patch, 
> KAFKA-1351_2014-04-09_15:40:11.patch
>
>
> As found in KAFKA-1350, logging is causing significant overhead in the 
> performance of a Kafka server. There are several info statements that use 
> String.format which is particularly expensive. We should investigate adding 
> our own version of String.format that merely uses string concatenation under 
> the covers.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to