https://bz.apache.org/bugzilla/show_bug.cgi?id=61212
Bug ID: 61212 Summary: Slow application boot time due to constant jar file content read Product: Tomcat 8 Version: 8.5.15 Hardware: PC OS: All Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: abruzgu...@eisgroup.com Target Milestone: ---- Created attachment 35071 --> https://bz.apache.org/bugzilla/attachment.cgi?id=35071&action=edit Profile Before We do have relativelly big spring based application with ~250mb of jars. After migrating from tc 7 to tc 8 application boot time significantly increased. Seems that most of the time is taken by a constant call to java.util.jar.JarFile.getJarEntry. Looks like tc8 class/resource loaded on each ClassLoader.loadClass(String) iterates throught all jars and asked each jar if resource exists instead of caching jar content once in memmory. tc 8 has the ability to read jar contens only once but to enable it we had to extend org.apache.catalina.webresources.StandardRoot iwth custom implementation. After change total time spent on org.apache.catalina.loader.WebappClassLoaderBase.loadClass(String) dropped from 87sec to 39sec. It was 40+sec of time wasted on constant jar content check. package org.apache.catalina.webresources; import org.apache.catalina.LifecycleException; import org.apache.catalina.WebResourceSet; /** * Created by adi on 09/06/2017. */ public class CustomStandardRoot extends org.apache.catalina.webresources.StandardRoot { @Override protected void startInternal() throws LifecycleException { super.startInternal(); for (WebResourceSet webResourceSet : getClassResources()) { if (webResourceSet instanceof AbstractArchiveResourceSet) { // Load Jar Content into Memory ((AbstractArchiveResourceSet)webResourceSet).getArchiveEntries(false); } } } } and register custom implementation in TOMCAT_HOME/conf/context.xml <?xml version="1.0" encoding="UTF-8"?> Context containerSciFilter="org.apache.tomcat.websocket.server.WsSci"> ... <Resources cachingAllowed="true" className="org.apache.catalina.webresources.CustomStandardRoot"/> ... </Context> -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org