You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@freemarker.apache.org by Tamás Barta <ba...@gmail.com> on 2019/11/04 22:00:19 UTC

Performance problem

Hi,

Could you please help me. I use Freemarker templates for a web site for
about 6 month and so far so good. Unfortunately since last week I have
serious performance problems. I couldn't find out what is going on, but
from thread dump I saw that almost every threads look like this:

       at freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:636)
       at freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
       at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3694)
       at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2872)
       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
       at freemarker.core.FMParser.Root(FMParser.java:4458)
       at freemarker.template.Template.(Template.java:253)
       at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
       at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
       at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
       at freemarker.template.Configuration.getTemplate(Configuration.java:2750)
       at freemarker.template.Configuration.getTemplate(Configuration.java:2599)


or


       at freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:634)
       at freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
       at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
       at freemarker.core.FMParser.PCData(FMParser.java:3604)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3756)
       at freemarker.core.FMParser.If(FMParser.java:1689)
       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
       at freemarker.core.FMParser.If(FMParser.java:1663)
       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
       at freemarker.core.FMParser.If(FMParser.java:1663)
       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
       at freemarker.core.FMParser.Root(FMParser.java:4458)
       at freemarker.template.Template.(Template.java:253)
       at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
       at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
       at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
       at freemarker.template.Configuration.getTemplate(Configuration.java:2750)

       at freemarker.template.Configuration.getTemplate(Configuration.java:2599)


Do you have any ideas where to find the problem? I use Freemarker 2.3.28.


Thanks, Tamás

Re: Performance problem

Posted by Siegfried Goeschl <si...@gmail.com>.
Hi Tamás, 

thanks for getting back - think this is vaguely mentioned in https://freemarker.apache.org/docs/pgui_config_templateloading.html

Thanks in advance, 

Siegfried Goeschl


> On 5 Nov 2019, at 14:44, Tamás Barta <ba...@gmail.com> wrote:
> 
> Hi,
> 
> Finally I managed to find it out that it was memory problem and I didn't
> know before that Freemarker uses soft-references cache inside by default,
> so parsed templates were cleared out and then parsed way too often.
> Traffic is increasing very fast in a webshop like ours as Christmas is
> coming so a few days ago it reached a problematic level.
> 
> Regards, Tamás
> 
> On Tue, Nov 5, 2019 at 10:56 AM Siegfried Goeschl <
> siegfried.goeschl@gmail.com> wrote:
> 
>> Hi Tamas,
>> 
>> I’m a Freemarker rookie but looking after performance problems is my daily
>> business :-)
>> 
>> IMHO the key question is - what has suddenly changed?
>> 
>> * New deployment?
>> * Changes to templates?
>> * Robots killing your website?
>> * Changed usage pattern of your website due client software release?
>> 
>> Thanks in advance,
>> 
>> Siegfried Goeschl
>> 
>>> On 4 Nov 2019, at 23:00, Tamás Barta <ba...@gmail.com> wrote:
>>> 
>>> Hi,
>>> 
>>> Could you please help me. I use Freemarker templates for a web site for
>>> about 6 month and so far so good. Unfortunately since last week I have
>>> serious performance problems. I couldn't find out what is going on, but
>>> from thread dump I saw that almost every threads look like this:
>>> 
>>>      at
>> freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:636)
>>>      at
>> freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
>>>      at
>> freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
>>>      at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3694)
>>>      at
>> freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2872)
>>>      at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>>>      at freemarker.core.FMParser.Root(FMParser.java:4458)
>>>      at freemarker.template.Template.(Template.java:253)
>>>      at
>> freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
>>>      at
>> freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
>>>      at
>> freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
>>>      at
>> freemarker.template.Configuration.getTemplate(Configuration.java:2750)
>>>      at
>> freemarker.template.Configuration.getTemplate(Configuration.java:2599)
>>> 
>>> 
>>> or
>>> 
>>> 
>>>      at
>> freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:634)
>>>      at
>> freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
>>>      at
>> freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
>>>      at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
>>>      at freemarker.core.FMParser.PCData(FMParser.java:3604)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3756)
>>>      at freemarker.core.FMParser.If(FMParser.java:1689)
>>>      at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>>>      at freemarker.core.FMParser.If(FMParser.java:1663)
>>>      at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>>>      at freemarker.core.FMParser.If(FMParser.java:1663)
>>>      at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>>>      at
>> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>>>      at freemarker.core.FMParser.Root(FMParser.java:4458)
>>>      at freemarker.template.Template.(Template.java:253)
>>>      at
>> freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
>>>      at
>> freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
>>>      at
>> freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
>>>      at
>> freemarker.template.Configuration.getTemplate(Configuration.java:2750)
>>> 
>>>      at
>> freemarker.template.Configuration.getTemplate(Configuration.java:2599)
>>> 
>>> 
>>> Do you have any ideas where to find the problem? I use Freemarker 2.3.28.
>>> 
>>> 
>>> Thanks, Tamás
>> 
>> 


Re: Performance problem

Posted by Tamás Barta <ba...@gmail.com>.
Hi,

Finally I managed to find it out that it was memory problem and I didn't
know before that Freemarker uses soft-references cache inside by default,
so parsed templates were cleared out and then parsed way too often.
Traffic is increasing very fast in a webshop like ours as Christmas is
coming so a few days ago it reached a problematic level.

Regards, Tamás

On Tue, Nov 5, 2019 at 10:56 AM Siegfried Goeschl <
siegfried.goeschl@gmail.com> wrote:

> Hi Tamas,
>
> I’m a Freemarker rookie but looking after performance problems is my daily
> business :-)
>
> IMHO the key question is - what has suddenly changed?
>
> * New deployment?
> * Changes to templates?
> * Robots killing your website?
> * Changed usage pattern of your website due client software release?
>
> Thanks in advance,
>
> Siegfried Goeschl
>
> > On 4 Nov 2019, at 23:00, Tamás Barta <ba...@gmail.com> wrote:
> >
> > Hi,
> >
> > Could you please help me. I use Freemarker templates for a web site for
> > about 6 month and so far so good. Unfortunately since last week I have
> > serious performance problems. I couldn't find out what is going on, but
> > from thread dump I saw that almost every threads look like this:
> >
> >       at
> freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:636)
> >       at
> freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
> >       at
> freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
> >       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3694)
> >       at
> freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2872)
> >       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
> >       at freemarker.core.FMParser.Root(FMParser.java:4458)
> >       at freemarker.template.Template.(Template.java:253)
> >       at
> freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
> >       at
> freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
> >       at
> freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
> >       at
> freemarker.template.Configuration.getTemplate(Configuration.java:2750)
> >       at
> freemarker.template.Configuration.getTemplate(Configuration.java:2599)
> >
> >
> > or
> >
> >
> >       at
> freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:634)
> >       at
> freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
> >       at
> freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
> >       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
> >       at freemarker.core.FMParser.PCData(FMParser.java:3604)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3756)
> >       at freemarker.core.FMParser.If(FMParser.java:1689)
> >       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
> >       at freemarker.core.FMParser.If(FMParser.java:1663)
> >       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
> >       at freemarker.core.FMParser.If(FMParser.java:1663)
> >       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
> >       at
> freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
> >       at freemarker.core.FMParser.Root(FMParser.java:4458)
> >       at freemarker.template.Template.(Template.java:253)
> >       at
> freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
> >       at
> freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
> >       at
> freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
> >       at
> freemarker.template.Configuration.getTemplate(Configuration.java:2750)
> >
> >       at
> freemarker.template.Configuration.getTemplate(Configuration.java:2599)
> >
> >
> > Do you have any ideas where to find the problem? I use Freemarker 2.3.28.
> >
> >
> > Thanks, Tamás
>
>

Re: Performance problem

Posted by Siegfried Goeschl <si...@gmail.com>.
Hi Tamas,

I’m a Freemarker rookie but looking after performance problems is my daily business :-)

IMHO the key question is - what has suddenly changed?

* New deployment?
* Changes to templates?
* Robots killing your website?
* Changed usage pattern of your website due client software release?

Thanks in advance, 

Siegfried Goeschl

> On 4 Nov 2019, at 23:00, Tamás Barta <ba...@gmail.com> wrote:
> 
> Hi,
> 
> Could you please help me. I use Freemarker templates for a web site for
> about 6 month and so far so good. Unfortunately since last week I have
> serious performance problems. I couldn't find out what is going on, but
> from thread dump I saw that almost every threads look like this:
> 
>       at freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:636)
>       at freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
>       at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
>       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3694)
>       at freemarker.core.FMParser.UnifiedMacroTransform(FMParser.java:2872)
>       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3457)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>       at freemarker.core.FMParser.Root(FMParser.java:4458)
>       at freemarker.template.Template.(Template.java:253)
>       at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
>       at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
>       at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
>       at freemarker.template.Configuration.getTemplate(Configuration.java:2750)
>       at freemarker.template.Configuration.getTemplate(Configuration.java:2599)
> 
> 
> or
> 
> 
>       at freemarker.core.FMParserTokenManager.jjMoveNfa_0(FMParserTokenManager.java:634)
>       at freemarker.core.FMParserTokenManager.jjMoveStringLiteralDfa0_0(FMParserTokenManager.java:530)
>       at freemarker.core.FMParserTokenManager.getNextToken(FMParserTokenManager.java:8008)
>       at freemarker.core.FMParser.jj_ntk_f(FMParser.java:5676)
>       at freemarker.core.FMParser.PCData(FMParser.java:3604)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3756)
>       at freemarker.core.FMParser.If(FMParser.java:1689)
>       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>       at freemarker.core.FMParser.If(FMParser.java:1663)
>       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>       at freemarker.core.FMParser.If(FMParser.java:1663)
>       at freemarker.core.FMParser.FreemarkerDirective(FMParser.java:3422)
>       at freemarker.core.FMParser.MixedContentElements(FMParser.java:3812)
>       at freemarker.core.FMParser.Root(FMParser.java:4458)
>       at freemarker.template.Template.(Template.java:253)
>       at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:549)
>       at freemarker.cache.TemplateCache.getTemplateInternal(TemplateCache.java:439)
>       at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:292)
>       at freemarker.template.Configuration.getTemplate(Configuration.java:2750)
> 
>       at freemarker.template.Configuration.getTemplate(Configuration.java:2599)
> 
> 
> Do you have any ideas where to find the problem? I use Freemarker 2.3.28.
> 
> 
> Thanks, Tamás