前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Tomcat spring boot 项目启动慢的问题

Tomcat spring boot 项目启动慢的问题

作者头像
良辰美景TT
发布2020-07-02 15:51:03
1.7K0
发布2020-07-02 15:51:03
举报

清理不必要的 Web 应用

首先我们要做的是删除掉 webapps 文件夹下不需要的工程,一般是 host-manager、example、doc 等这些默认的工程,可能还有以前添加的但现在用不着的工程,最好把这些全都删除掉。如果你看过 Tomcat 的启动日志,可以发现每次启动 Tomcat,都会重新布署这些工程。

清理 JAR 文件

我们还可以删除所有不需要的 JAR 文件。JVM 的类加载器在加载类时,需要查找每一个 JAR 文件,去找到所需要的类。如果删除了不需要的 JAR 文件,查找的速度就会快一些。这里请注意:Web 应用中的 lib 目录下不应该出现 Servlet API 或者 Tomcat 自身的 JAR,这些 JAR 由 Tomcat 负责提供。如果你是使用 Maven 来构建你的应用,对 Servlet API 的依赖应该指定为provided。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!--用于编译jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

关闭mysql SSL链接

image.png

mysql的高版本默认要求使用SSL链接,所以在没有配置SSL也没有说SSL不需要时,就会一直验证,验证好几遍以后放弃。 解决办法在链接参数里加上

spring.datasource.çurl=jdbc:mysql://localhost:3306/mark?useUnicode=true&characterEncoding=utf-8&useSSL=false

禁止 Tomcat TLD 扫描

Tomcat 为了支持 JSP,在应用启动的时候会扫描 JAR 包里面的 TLD 文件,加载里面定义的标签库,所以在 Tomcat 的启动日志里,你可能会碰到这种提示:

At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

Tomcat 的意思是,我扫描了你 Web 应用下的 JAR 包,发现 JAR 包里没有 TLD 文件。我建议配置一下 Tomcat 不要去扫描这些 JAR 包,这样可以提高 Tomcat 的启动速度,并节省 JSP 编译时间。

禁止TLD扫描

如果你的项目没有使用 JSP 作为 Web 页面模板,而是使用 Velocity 之类的模板引擎,你完全可以把 TLD 扫描禁止掉。方法是,找到 Tomcat 的conf/目录下的context.xml文件,在这个文件里 Context 标签下,加上 JarScanner 和 JarScanFilter 子标签,像下面这样。

image.png

指定扫描的jar包

1: 开启扫描的日志, 方便知道那些包里有TLD 文件 logging.properties

org.apache.jasper.servlet.TldScanner.level = FINE

2: 把需要扫描的包加到 catalina.properties里

tomcat.util.scan.StandardJarScanFilter.jarsToScan=\
log4j-taglib*.jar,\
log4j-web*.jar,\
log4javascript*.jar,\
slf4j-taglib*.jar,\
javamelody-core*.jar,\
spring-webmvc*.jar,\
jstl*.jar,\
shiro-web*.jar

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
*.jar
如果是Intellij集成的时候部署慢,需要把部署方式改成 war:exploded

这样就不需要在解压打好的war包了,如下图所示

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 清理不必要的 Web 应用
  • 清理 JAR 文件
  • 关闭mysql SSL链接
  • 禁止 Tomcat TLD 扫描
    • 禁止TLD扫描
      • 指定扫描的jar包
        • 如果是Intellij集成的时候部署慢,需要把部署方式改成 war:exploded
        相关产品与服务
        SSL 证书
        腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档