camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Burgazzoli <>
Subject Re: [HELP] - Profile camel-core for optimization and faster startup
Date Mon, 29 May 2017 05:30:43 GMT
It may be worth adding a small number of JMH micro benchmarks - not to
be used as performances metrics - on camel core so we can spot
potential regressions.

Luca Burgazzoli

On Sun, May 28, 2017 at 11:31 AM, Claus Ibsen <> wrote:
> Hi
> I have found some more spots for optimisations which I have committed
> over the last couple of days.
> Its been several years since we last did such things last, and I have
> to admit we have introduced some code that add more object allocation
> and a few performance drawbacks since then.
> So with the help of profilers we should be able to improve the
> situation for the Camel 2.20 release.
> I have to give credit to Luca for bring this idea up about making
> Camel startup faster and look into the number of objects allocated
> etc. Usually Camel has negligible performance overhead in the grand
> scheme of things. But we have more fine grained performance statistics
> today which records the time taken in every step messages are routed.
> This uses the StopWatch object which we frankly create too many new
> instances. So by reducing those we can reduce the object allocations
> and therefore the JVM GC characteristics.
> In the stuff I have optimised you can find the JIRA tickets with
> Optimise as prefix. I usually have attached some screenshots from the
> profiler so you can see before vs after situations).
> We have two areas that can be improved
> 1) startup Camel faster (jndi registry, caffine lru cache, and the
> uuid generator is a bit slow in their constructors)
> 2) faster routing per message at runtime (potential optimise by
> reducing object allocations, turn off some features less/seldom in
> use, optimise code logic in hot-spot areas, reduce size of internal
> state objects, avoid thread contention from synchronized methods,
> etc.)
> On Fri, May 26, 2017 at 3:59 PM, Claus Ibsen <> wrote:
>> Hi
>> We have found a few spots to optimize the camel-core source code for
>> thread contention and something else.
>> You can use a profile tool such as YourKit which is excellent at
>> identifying spots and visualizing what goes on in the JVM.
>> We have used it in the past to optimise stuff. However recently Luca
>> asked about making Camel startup faster:
>> And although fast startup is not excatly the same as runtime
>> performance then they are still related. A profile can help identify
>> places for improvements.
>> I have pushed a sample project at
>> You can then run this via
>>    mvn spring-boot:run
>> And then attach YourKit profiler.
>> However if you use IDEA then you can start YourKit, then from YourKit
>> you can choose Integrate with IDE ... and then chose IDEA and then say
>> ok even if IDEA is also running.
>> In IDEA you should see a YourKit icon if you right-click on the
>> SampleCamelApplication to run this application, then you can chose
>> that to profile, and it run the app with profiler.
>> You then switch to YourKit and you should start see data.
>> To check for thread contention, then select the "Monitor Usage" tab,
>> and then click the gear button with the play icon "Start Monitor
>> Profile" which then starts capture data.
>> For YourKit you can request a trial license that works for 2 weeks.
>> --
>> Claus Ibsen
>> -----------------
>> @davsclaus
>> Camel in Action 2:
> --
> Claus Ibsen
> -----------------
> @davsclaus
> Camel in Action 2:

View raw message