tomcat启动项目慢

1、服务器环境tomcat8.0.36,出现启动要3分钟作用才能访问8080端口,查看日志有如下

03-Apr-2018 13:52:18.705 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 209240 ms

消耗比较长,如下日志

org.apache.jasper.servlet.TldScanner.scanJars 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

这里消耗比较长,在conf/logging.properties里面输入org.apache.jasper.servlet.TldScanner.level = FINE或者

注释掉org.apache.jasper.compiler.TldLocationsCache.level = FINE这行文本,会显示详细

jar包信息,这些jar包信息可以添加到如下(conf/catalina.properties)

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*


### 本地Tomcat项目启动的原因及优化方法 #### 原因分析 1. **随机数生成导致的熵池耗尽** Tomcat启动时会生成Session ID,而此过程依赖于`SecureRandom`类[^4]。如果系统熵池不足,`SecureRandom`生成随机数的时间将显著增加,从而导致Tomcat启动[^5]。 2. **JDK安全配置问题** 默认情况下,JDK的安全配置文件`java.security`中可能存在影响性能的设置。例如,某些参数可能导致随机数生成时间过长[^1]。 3. **内存分配不足** 如果为Tomcat分配的内存不足,可能会导致垃圾回收(GC)频繁发生,从而拖启动速度[^2]。 4. **日志级别过高或日志量过大** 如果日志记录级别设置得过于详细(如DEBUG),或者日志文件过大,可能会影响Tomcat启动性能[^3]。 5. **项目依赖和初始化逻辑复杂** 某些项目依赖(如数据库连接池、第三方库等)初始化时间较长,或者存在复杂的启动逻辑,也会导致启动[^3]。 --- #### 优化方法 1. **调整随机数生成方式** 修改`java.security`文件中的随机数生成器配置,使用更高效的算法替代默认的`SHA1PRNG`。例如,将以下内容添加到`java.security`文件中: ```properties securerandom.source=file:/dev/urandom ``` 这一改动可以有效减少随机数生成时间[^1]。 2. **增加JVM内存分配** 在启动Tomcat时,通过设置JVM参数来增加堆内存和永久代内存。例如,在`setenv.sh`或`catalina.bat`中添加以下内容: ```bash JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m" ``` 根据实际需求调整内存大小,确保Tomcat有足够的资源运行[^2]。 3. **优化日志配置** 检查项目的日志配置文件(如`log4j.properties`或`logback.xml`),将日志级别调整为`INFO`或更高,并清理不必要的日志输出。 4. **减少项目依赖初始化时间** 对项目进行代码审查,优化启动时的依赖加载逻辑。例如,延迟加载非必要的组件,或者优化数据库连接池的初始化配置。 5. **升级Tomcat版本** 如果当前使用的Tomcat版本较旧,建议升级到最新稳定版本。新版本通常会对性能和安全性进行改进,同时修复已知问题[^3]。 6. **检查硬件资源** 确保服务器或本地开发环境有足够的CPU和内存资源。如果硬件资源不足,可能会导致Tomcat启动时出现性能瓶颈。 7. **禁用不必要的模块和服务** 如果某些模块(如AJP连接器、HTTPS支持等)未被使用,可以在`server.xml`中禁用这些模块,以减少启动时的开销[^3]。 --- ### 示例代码 以下是修改`java.security`文件和设置JVM参数的示例: ```bash # 修改 java.security 文件 securerandom.source=file:/dev/urandom # 设置 JVM 参数 JAVA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值