在tomcat启动的时候,我们可以做一些优化设置来使得tomcat的启动更快速,下面是一些常见的优化加速启动的方法建议(以tomcat-7.+为例说明)。

1、  Jars包

1.1、将一些不必要的jar包去掉,当tomcat启动加载jar包的时候,会去搜寻每个jar包里的class文件,这些都会耗费一些时间,如果你把不必要的jar包去掉了,很显然会节省时间。

1.2、你可以将一些与TLD files、注解、网络碎片无关的jar包加入到属性

tomcat.util.scan.DefaultJarScanner.jarsToSkip的值中,这可以在conf/catalina.properties中进行设置。

2、  缓存

你可以在bin/catalina.sh中设置jvm所能使用到的缓存大小,如下:

JAVA_OPTS=’-Xms1024m -Xmx1024m’

3、  配置文件

Tomcat的配置比如server.xml是xml文件,而xml的解析也是要花时间的,如果我们能将xml配置文件尽可能地弄得简洁一些,比如去掉一些没有用到的节点,这也有助于减少启动的时间,虽然这个节省的时间看来很少。

4、  应用程序

4.1、确保你程序在启动的时候没有一些处理很耗时的地方。

4.2、删除掉tomcat自带的目录webapps及下面的所有内容,不然的话每次启动的时候都会加载这些自带的例子。

4.3、修改WEB-INF/web.xml文件,在默认的情况下中的属性metadata-complete的值为false,也就是这样:,这种情况下,tomcat在启动时会去自动扫描是否有注解及网络碎片,如果你不想tomcat这样做,你可以将metadata-complete的值设为true。

5、  并行启动多个应用程序

默认情况下,假设在一个tomcat下你有多个应用,那么启动的时候,这些应用程序都是依次启动的,除非所有应用全部启动完毕,tomcat才会启动完成,但从Tomcat 7.0.23+开始,你可以配置多个应用程序并行启动了!你可以通过修改配置文件中Host里面的startStopThreads这个属性的值来达到这个目的,将多个应用startStopThreads的值设为不同即可。

6、  Entropy Source

Tomcat 7+严重依赖SecureRandom这个类为它的session id或其它地方取得随机数值,这取决于你的JRE,它有可能在tomcat启动时造成非常大的耗时,比如,在子猴启动tomcat-7.0.26的时候,它耗时近25秒!

INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [24,790] milliseconds.

要解决这个问题,可以通过配置JRE使用非阻塞的Entropy Source,在bin/ catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。

加入后我再启动tomcat,整个启动下降到仅耗时Server startup in 912 ms。

如何加速tomcat启动速度的更多相关文章

  1. 内嵌tomcat启动速度慢

    项目上最近要把内置的jetty换成tomcat, 来更好的支持servlet 3.0 本来以为换个容器, 几十行代码就好了. 实际上换了tomcat后, 一开始启动tomcat, 非常的慢. jett ...

  2. 彻底解决eclipse中tomcat启动速度缓慢的问题

    问题: Tomcat启动提示At least one JAR was scanned for TLDs yet contained no TLDs tomcat启动速度总是很慢,检查后发现tomcat ...

  3. tomcat 启动速度慢背后的真相

    1. tomcat 启动慢 在线上环境中,我们经常会遇到类似的问题,就是tomcat 启动比较慢,查看内存和cpu,io都是正常的,但是启动很慢,有的时候长达几分钟,这到底是什么原因导致的. 1.1 ...

  4. Tomcat 启动速度优化

    创建一个web项目 选择发布到 汤姆猫 的下面 deploy path: 表示发布到的文件名称 把项目添加到 tomcat 里,运行,我们可以在 tomcat里找到我们发布的项目: 现在启动时间: 现 ...

  5. 优化tomcat启动速度

    1.去掉不需要的jar包,这样tomcat在启动时就可以少加载jar包里面的class文件. 2.跳过一些与TLD files.注解.网络碎片无关的jar包,通过在conf/catalina.prop ...

  6. 彻底找到 Tomcat 启动速度慢的元凶 /dev/random

    参考  http://blog.csdn.net/u013939884/article/details/72860358

  7. Tomcat 8启动速度慢原因1: At least one JAR was scanned for TLDs yet contained no TLDs

    最近使用tomcat8启动项目时,发现At least one JAR was scanned for TLDs yet contained no TLDs这一步加载时间非常长, 从网上收集了各种资料 ...

  8. Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理

    文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...

  9. Tomcat:At least one JAR was scanned for TLDs yet contained no TLDs

    启动Tomcat的时候,经常见到这样的BUG:   14-Apr-2019 13:53:25.198 信息 [localhost-startStop-1] org.apache.jasper.serv ...

随机推荐

  1. mysql 连接查询 join

    本文用到的表 CREATE TABLE `cls` ( `cls_id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, PRIMARY KEY (`cls ...

  2. 怎样在 Ubuntu 上使用 ZFS 文件系统 | Linux 中国

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79329762 http://mmbiz ...

  3. 请用漂亮欢呼-------Day38

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/marSmile_tbo/article/details/31108557 周末,双休,疯了两天.敲了 ...

  4. Python3学习之路~2.1 列表、元组操作

    列表 列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作. 定义列表(list) names=['Amy','Bob','Cindy','David'] 通过下标访问列 ...

  5. PAT 1064 Complete Binary Search Tree[二叉树][难]

    1064 Complete Binary Search Tree (30)(30 分) A Binary Search Tree (BST) is recursively defined as a b ...

  6. [LeetCode] 261. Graph Valid Tree _ Medium tag: BFS

    Given n nodes labeled from 0 to n-1 and a list of undirected edges (each edge is a pair of nodes), w ...

  7. win10 + cuda(v9.0) 安装TensorFlow-gpu版

    之前在实习公司的电脑上装过TensorFlow-gpu,那时候很快就装好了.但在自己的笔记本上装时,却搞了很久... 一部分原因是因为用校园网下载cuda toolkit 和cudnn ,总是在最后时 ...

  8. SVN 取消版本控制并添加至忽略列表

    忽略已经版本控制的文件忽略文件和目录 起因: 由于项目中的IDE Jdeveloper在某些指定目录下面会生成server.xml以及common文件夹,且包含一个名为bc4j.xcfg的文件,每次当 ...

  9. visual studio 2010 winform程序不能添加对system.web的引用

    visual studio 2010 winform程序不能添加对system.web的引用[转载] 需要引用到System.Web.发现没有“System.Web”.在通过“浏览”方式,找到该DLL ...

  10. UVALive - 7261 Xiongnu's Land

    思路: 先二分下界,再二分上届. #include <bits/stdc++.h> using namespace std; #define MP make_pair #define PB ...