Azure Tomcat application启动速度优化(20180704)

Posted Java每日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Tomcat application启动速度优化(20180704)相关的知识,希望对你有一定的参考价值。

公司使用Azure Tomcat 8.5.31版本的应用服务,但是开发环境使用的配置很低,每次启动一个war包基本都在5分钟左右,导致开发测试效率非常低下。

通过监控Azure tomcat 应用服务日志,发现以下日志:


通过搜素发现该日志提示是在应用启动的时候会扫描 Jar 包里面的 .tld 文件,加载里面定义的标签库,但是,项目在开发并用不到 JSP 作为 Web 页面的模板,自然而然,为了加快应用的启动速度,可以把 Tomcat 里面的这个功能给关掉。


很多地方提示在context.xml文件中增加processTlds属性为false就可以关闭Tomcat自动扫描.tld文件的功能,但是在该应用服务中,加入该参数后会出现,属性未找到的异常,虽然能正常启动Tomcat服务,但是.tld文件的扫描还在继续,并且解决到问题。


然后又尝试了其它方式,参照tomcat6的方式进行搜索,发现配置JARScan方式可以解决,具体配置方式如下:

在Tomcat的conf/context.xml中, 加入如下配置:

<JarScanner scanClassPath="false"

重新启动Tomcat应用服务,发现速度还是很慢,而且还是会有scan .tld文件的日志输出,但是启动稍有改善,加上该配置之前启动项目300秒左右,加上该配置后,启动加快了1分钟左右,算是快了一点,还是不理想。

继续根据JarScan线索寻找进一步加快启动速度的答案,原来发现JarScanner是可以指定忽略jar包扫描的,查看tomcat的conf目录下的catalina.properties文件,找到tomcat.util.scan.DefaultJarScanner.jarsToSkip该选项,发现该选项指定了很多公共的jar包不进行扫描,然后在该选项增加/*.jar内容后,重启应用服务,查看启动日志,未发现.tld文件的扫描日志,并且在原来启动速度基础上,又快了1分钟左右,启动一个war文件只需要3分钟左右,比刚开始的5分钟好了很多,考虑到使用的是azure tomcat应用服务,该启动速度算是能满足开发测试的速度,到此,tld文件扫描导致tomcat启动缓慢的问题解决。

后续会继续考虑增大启动内存以及其他方式优化该应用服务的启动速度。

以上是关于Azure Tomcat application启动速度优化(20180704)的主要内容,如果未能解决你的问题,请参考以下文章

关于文件上传的坑,tomcat一重启图片就消失

想把在Windows下的jsp项目部署到Linux下,已经在linux下装好了tomcat,且能正常启和访问,但把jsp项目

Azure 应用程序网关和 Azure Application Insights 之间的关联

Azure Application Gateway 面向公网的Application Gateway

Azure Application Insights 不显示数据

使用 Application Insights 监控我的 Azure 功能