我从Tomcat 7.0.54升级到8.0.15,将openSSL升级到1.0.1k,使用APR 1.5.1将tcnative升级到最新的1.1.32。
然而,Tomcat现在比以前慢了大约2到3倍。最值得注意的是,部署WAR文件需要更长的时间。
Tomcat 7
Jan 20, 2015 3:39:36 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive <PATH>\file.war has finished in 433 ms
Tomcat 8
Jan 21, 2015 2:27:01 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive <PATH>\file.war has finished in 4,310 ms
所有WAR文件都会发生这种情况,所有这些都是从毫秒到大约5秒。
我从server.xml中删除了JasperListener,因为它似乎已被删除。
unpackWARs="false"
autoDeploy="true"
如果设置为true(至少不显着),unpackWars没有区别。 我认为它可能是8.0.17中修复的注释扫描问题,但没有运气。
我注意到catalina.properties中的jarsToSkip已从
更改tomcat.util.scan.DefaultJarScanner.jarsToSkip to
tomcat.util.scan.StandardJarScanFilter.jarsToSkip
那 删除了org.apache.catalina.startup.TldConfig.jarsToSkip并转到context.xml
<JarScanner>
<JarScanFilter tldSkip="websocket-api.jar,tomcat-websocket.jar"/>
</JarScanner>
然而,这似乎都没有让我回到tomcat 7的表现。确实这样做的一个动作是删除websocket jar。但是我们需要它们。这使我得出结论,即使它们仍然被扫描,即使它们应该被跳过。
我错过了什么吗? context.xml与catalina.properties jarsToSkip不一样吗?
答案 0 :(得分:7)
对我来说,缓慢启动的解决方案就是放弃 在conf / context.xml中:
<Context>
<JarScanner>
<JarScanFilter defaultPluggabilityScan="false" />
</JarScanner>
</Context>
来源: https://groups.google.com/a/apereo.org/forum/#!topic/sakai-dev/cjtYGxd6hG0
答案 1 :(得分:1)
我在这里遇到类似的问题。
改善启动时间的一个选择是添加:
metadata-complete="true"
到web.xml(webapp元素),如http://wiki.apache.org/tomcat/HowTo/FasterStartUp中所建议的那样。这假设您的web.xml就是您的Web应用程序需要启动的所有内容。
它并没有完全解决我的问题,但启动速度的提升是相当可观的。
答案 2 :(得分:0)
你确定unpackWARs =“true”对你没什么影响吗?
在bugzilla中有关于此主题的持续讨论:
https://issues.apache.org/bugzilla/show_bug.cgi?id=57251
已经确定,当unpackWARs =“false”时,Tomcat 8的行为将明显变慢,因为代码中执行的实现简化。
答案 3 :(得分:0)
您可以通过更改来尝试并行启动
在conf/server.xml
主机元素属性<Host ... startStopThreads="0"/>