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

Vijayakannan commented on WW-3765:
----------------------------------

We are also using the same workaround in our project but it's not an optimal 
solution.
During the performance testing with 800 concurrent user, the getTemplate() 
method in TemplateCache.java blocks 80 Threads(Deadlocks occur) and this is an 
major performance issue in our project. Our application should be available for 
24/7 and expected concurrent user is more than 7000

One worst day, this workaround will blocks the user threads even if we provide 
the max long value.

We identified that the root cause of deadlocks is reloading the Freemaker 
template
For the optimal solution, there should some option to enable\disable the 
reloading of Freemaker template with cache option


                
> Improve performance of FreeMarker Template caching
> --------------------------------------------------
>
>                 Key: WW-3765
>                 URL: https://issues.apache.org/jira/browse/WW-3765
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Integration
>    Affects Versions: 2.3.1
>         Environment: Tomcat v7.0
>            Reporter: Vijayakannan
>            Priority: Critical
>              Labels: freemarker-template-reload-required
>             Fix For: 2.3.2
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Struts2 having option to enable the freemarker template caching with 
> reloading the template with time delay which helps us to improve the 
> performance.
> In our application we are using the strut2 in-built UI freemarker template. 
> We need the caching option without reloading the templates after the specific 
> time delay.
> Caching option is more powerful if we have an option for enabling\disabling 
> the reload
> Proposed Solution 
> Struts.xml
> <constant name="struts.freemarker.templatesCache.required" value="true"/>
> FreeMarkerManager.java 
> protected boolean templateUpdateRequired;
> @Inject(STRUTS_FREEMARKER_TEMPLATES_RELOAD_REQUIRED)
> public void setTemplateUpdateRequired(String templateUpdateRequired) {
>               this.templateUpdateRequired 
> ="true".equals(templateUpdateRequired);
>       }
> Update createConfiguration(ServletContext servletContext) Method
>    configuration.setSetting(Configuration. TEMPLATE_RELOAD_ REQUIRED _KEY, 
> templateUpdateRequired);
> Configuration.java
>   String TEMPLATE_RELOAD_ REQUIRED _KEY= "template_reload_required";
> TemplateCache.Java
>   protected boolean templateUpdateRequired;
> Update getTemplate(TemplateLoader loader, String name, Locale locale, String 
> encoding, boolean parse) Method
> ...
> if (templateUpdateRequired !=false && now - cachedTemplate.lastChecked < 
> delay) {

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to