You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2020/10/05 12:43:14 UTC

Re: Performance regression with bean and ognl expressions in Simple language version 3.4.x

Hi Corneliu

Thanks for the reproducer. We have fixed a bunch of stuff and you are
welcome to try with SNAPSHOT and do profiling again and report back if
you can find improvements too.
Or if you dont have time then test again when Camel 3.6.0 comes out
later in October

On Thu, Sep 17, 2020 at 2:32 AM Corneliu Chitic
<co...@computaris.com.invalid> wrote:
>
> Hi,
>
> we've identified a performance regression while running same code with Apache Camel 3.4.3 + Spring Boot vs Apache Camel 2.24.2 with Spring framework 5.1.9. We've migrated one application to this LTS version and we face this impact.
> The main bottleneck is the synchronized block from: org.apache.camel.impl.engine.AbstractCamelContext.resolveLanguage(String). The root cause is the time spent to validate Simple expressions when using bean language (${bean:name?method=something}) or OGNL like calls to POJO methods (${exchangeProperty.pojo.method}). According to the stack traces the new version spends time to allocate the bean + full setup of it. Blocking times are quite high (average 100ms, max could be ~300ms) and as the number of parallel processing threads increases it goes up steadily.
>
> Has anything changed in version 3.x (or more precisely 3.4.x)? The changelogs and upgrade tutorial didn't suggested anything in this area.
> Is there any configuration flag that would allow us to switch back to version 2.x mode of working for this functionality?
>
> We have run repeated trials and have consistent results with both versions; we have a project setup to demo this and also some Java Flight recordings for comparison. I don't think I can attach anything to this maillist, please let me know how I can provide any additional input if needed.
>
> Thank you, Corneliu
> This email is subject to Computaris email terms of use: https://www.computaris.com/email-terms-use/



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

RE: Performance regression with bean and ognl expressions in Simple language version 3.4.x

Posted by Corneliu Chitic <co...@computaris.com.INVALID>.
Hi,

I want to be sure you understand the impact is high in multi-threaded applications without possibility to overcome unless one re-writes the code to avoid the bean & ognl in Simple language.
I was under the impression that LTS implies such kind of patches, but it's your call, I don't want to start a debate. Maybe it's worth adding a note for others to be aware of the current issue with version 3.(0->5).x?

Thank you and regards, Corneliu

-----Original Message-----
From: Claus Ibsen <cl...@gmail.com> 
Sent: Monday, October 12, 2020 14:31
To: users@camel.apache.org
Subject: Re: Performance regression with bean and ognl expressions in Simple language version 3.4.x

On Mon, Oct 12, 2020 at 11:31 AM Corneliu Chitic <co...@computaris.com.invalid> wrote:
>
> Hi,
>
> Thanks for the update, fixes and sorry for late response. We've been busy with a release for which we had to overcome this performance issue by migrating the expressions and using "ref:" language.
> We'll run some trials of the same code in the near future of the 3.4.5-SNAPSHOT version if I understood correctly and will post an update.
> Definitely we won't migrate to 3.6.x, we'll stick to 3.4.x for some time.
>

Okay the improvements are only in new versions, not in 3.4.x.

> Thank you, Corneliu
>
> -----Original Message-----
> From: Claus Ibsen <cl...@gmail.com>
> Sent: Monday, October 5, 2020 15:43
> To: users@camel.apache.org
> Subject: Re: Performance regression with bean and ognl expressions in 
> Simple language version 3.4.x
>
> Hi Corneliu
>
> Thanks for the reproducer. We have fixed a bunch of stuff and you are welcome to try with SNAPSHOT and do profiling again and report back if you can find improvements too.
> Or if you dont have time then test again when Camel 3.6.0 comes out 
> later in October
>
> On Thu, Sep 17, 2020 at 2:32 AM Corneliu Chitic <co...@computaris.com.invalid> wrote:
> >
> > Hi,
> >
> > we've identified a performance regression while running same code with Apache Camel 3.4.3 + Spring Boot vs Apache Camel 2.24.2 with Spring framework 5.1.9. We've migrated one application to this LTS version and we face this impact.
> > The main bottleneck is the synchronized block from: org.apache.camel.impl.engine.AbstractCamelContext.resolveLanguage(String). The root cause is the time spent to validate Simple expressions when using bean language (${bean:name?method=something}) or OGNL like calls to POJO methods (${exchangeProperty.pojo.method}). According to the stack traces the new version spends time to allocate the bean + full setup of it. Blocking times are quite high (average 100ms, max could be ~300ms) and as the number of parallel processing threads increases it goes up steadily.
> >
> > Has anything changed in version 3.x (or more precisely 3.4.x)? The changelogs and upgrade tutorial didn't suggested anything in this area.
> > Is there any configuration flag that would allow us to switch back to version 2.x mode of working for this functionality?
> >
> > We have run repeated trials and have consistent results with both versions; we have a project setup to demo this and also some Java Flight recordings for comparison. I don't think I can attach anything to this maillist, please let me know how I can provide any additional input if needed.
> >
> > Thank you, Corneliu
> > This email is subject to Computaris email terms of use:
> > https://www.computaris.com/email-terms-use/
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Performance regression with bean and ognl expressions in Simple language version 3.4.x

Posted by Claus Ibsen <cl...@gmail.com>.
On Mon, Oct 12, 2020 at 11:31 AM Corneliu Chitic
<co...@computaris.com.invalid> wrote:
>
> Hi,
>
> Thanks for the update, fixes and sorry for late response. We've been busy with a release for which we had to overcome this performance issue by migrating the expressions and using "ref:" language.
> We'll run some trials of the same code in the near future of the 3.4.5-SNAPSHOT version if I understood correctly and will post an update.
> Definitely we won't migrate to 3.6.x, we'll stick to 3.4.x for some time.
>

Okay the improvements are only in new versions, not in 3.4.x.

> Thank you, Corneliu
>
> -----Original Message-----
> From: Claus Ibsen <cl...@gmail.com>
> Sent: Monday, October 5, 2020 15:43
> To: users@camel.apache.org
> Subject: Re: Performance regression with bean and ognl expressions in Simple language version 3.4.x
>
> Hi Corneliu
>
> Thanks for the reproducer. We have fixed a bunch of stuff and you are welcome to try with SNAPSHOT and do profiling again and report back if you can find improvements too.
> Or if you dont have time then test again when Camel 3.6.0 comes out later in October
>
> On Thu, Sep 17, 2020 at 2:32 AM Corneliu Chitic <co...@computaris.com.invalid> wrote:
> >
> > Hi,
> >
> > we've identified a performance regression while running same code with Apache Camel 3.4.3 + Spring Boot vs Apache Camel 2.24.2 with Spring framework 5.1.9. We've migrated one application to this LTS version and we face this impact.
> > The main bottleneck is the synchronized block from: org.apache.camel.impl.engine.AbstractCamelContext.resolveLanguage(String). The root cause is the time spent to validate Simple expressions when using bean language (${bean:name?method=something}) or OGNL like calls to POJO methods (${exchangeProperty.pojo.method}). According to the stack traces the new version spends time to allocate the bean + full setup of it. Blocking times are quite high (average 100ms, max could be ~300ms) and as the number of parallel processing threads increases it goes up steadily.
> >
> > Has anything changed in version 3.x (or more precisely 3.4.x)? The changelogs and upgrade tutorial didn't suggested anything in this area.
> > Is there any configuration flag that would allow us to switch back to version 2.x mode of working for this functionality?
> >
> > We have run repeated trials and have consistent results with both versions; we have a project setup to demo this and also some Java Flight recordings for comparison. I don't think I can attach anything to this maillist, please let me know how I can provide any additional input if needed.
> >
> > Thank you, Corneliu
> > This email is subject to Computaris email terms of use:
> > https://www.computaris.com/email-terms-use/
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

RE: Performance regression with bean and ognl expressions in Simple language version 3.4.x

Posted by Corneliu Chitic <co...@computaris.com.INVALID>.
Hi,

Thanks for the update, fixes and sorry for late response. We've been busy with a release for which we had to overcome this performance issue by migrating the expressions and using "ref:" language.
We'll run some trials of the same code in the near future of the 3.4.5-SNAPSHOT version if I understood correctly and will post an update.
Definitely we won't migrate to 3.6.x, we'll stick to 3.4.x for some time.

Thank you, Corneliu

-----Original Message-----
From: Claus Ibsen <cl...@gmail.com> 
Sent: Monday, October 5, 2020 15:43
To: users@camel.apache.org
Subject: Re: Performance regression with bean and ognl expressions in Simple language version 3.4.x

Hi Corneliu

Thanks for the reproducer. We have fixed a bunch of stuff and you are welcome to try with SNAPSHOT and do profiling again and report back if you can find improvements too.
Or if you dont have time then test again when Camel 3.6.0 comes out later in October

On Thu, Sep 17, 2020 at 2:32 AM Corneliu Chitic <co...@computaris.com.invalid> wrote:
>
> Hi,
>
> we've identified a performance regression while running same code with Apache Camel 3.4.3 + Spring Boot vs Apache Camel 2.24.2 with Spring framework 5.1.9. We've migrated one application to this LTS version and we face this impact.
> The main bottleneck is the synchronized block from: org.apache.camel.impl.engine.AbstractCamelContext.resolveLanguage(String). The root cause is the time spent to validate Simple expressions when using bean language (${bean:name?method=something}) or OGNL like calls to POJO methods (${exchangeProperty.pojo.method}). According to the stack traces the new version spends time to allocate the bean + full setup of it. Blocking times are quite high (average 100ms, max could be ~300ms) and as the number of parallel processing threads increases it goes up steadily.
>
> Has anything changed in version 3.x (or more precisely 3.4.x)? The changelogs and upgrade tutorial didn't suggested anything in this area.
> Is there any configuration flag that would allow us to switch back to version 2.x mode of working for this functionality?
>
> We have run repeated trials and have consistent results with both versions; we have a project setup to demo this and also some Java Flight recordings for comparison. I don't think I can attach anything to this maillist, please let me know how I can provide any additional input if needed.
>
> Thank you, Corneliu
> This email is subject to Computaris email terms of use: 
> https://www.computaris.com/email-terms-use/



--
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2