解决tomcat启动-Skipping unneeded JARs during scanning can improve startup time and JSP compilation time
Tomcat9.0启动变慢解决
问题过程
在linux centos7上部署测试web项目时,通过nginx配置的tomcat集群,在启动tomcat9.0的过程中,无报错信息,但tomcat一直卡在Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.无法继续执行,约5.6分钟后,tomcat才启动成功。
tomcat启动日志
通过查看tomcat根目录下的日志(logs/catalina.xxxx-xx-xx.log):
08-Aug-2020 09:30:43.870 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/root/tomcat/tomcat9.0.37-1/webapps/wnshop.war] has finished in [748] ms
08-Aug-2020 09:30:43.870 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/root/tomcat/tomcat9.0.37-1/webapps/wnshop1.war]
08-Aug-2020 09:30:44.156 INFO [main] 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.
分析
查阅资料发现由于tomcat启动时产生随机数导致jvm阻塞,可能是我多次重启tomcat导致熵池被用空造成阻塞,在apache-tomcat官方文档:如何让tomcat启动更快里面提到了一些启动时的优化项,其中一项是关于随机数生成时,采用的“熵源”(entropy source)的策略。它提到tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现。
随机数算法使用的是”SHA1PRNG”,在sun/oracle的jdk里,这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux系统的jdk中与之相关的是/dev/random和/dev/urandom,当熵池为空时
自/dev/random的读操作将被阻塞,直到熵池收集到足够的环境噪声数据。这么做的目的是成为一个密码安全的伪随机数发生器,熵池要有尽可能大的输出。对于生成高质量的加密密钥或者是需要长期保护的场景,一定要这么做。
而在环境噪声中,随机数产生器会手机来自设备驱动器和其它源的环境噪声数据,并放入熵池中,产生器会评估熵池中的噪声数据的数量,当熵池为空时,这个噪声数据的收集是比较花时间的,这就意味着,Tomcat在生产环境中使用熵池时,会被阻塞较长的时间。
解决方法
1)配置tomcat参数
可以通过配置JRE使用非阻塞的Entropy Source:
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动Tomcat,整个启动耗时将恢复正常;
2)配置JVM环境
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom替换成securerandom.source=file:/dev/./urandom
建议
1.上述解决方式也是通过查阅资料得到的,具体的原理笔者也正在了解中;
2.概括下大概可以从 “熵源”(entropy source)的策略 随机数算法”SHA1PRNG” /dev/random的读操作 环境噪声这几个方面来深入了解这个问题。
解决tomcat启动-Skipping unneeded JARs during scanning can improve startup time and JSP compilation time相关推荐
- 如何解决tomcat启动时出现 Server Tomcat v9.0 Server at localhost failed to start.
如何解决tomcat启动时出现 Server Tomcat v9.0 Server at localhost failed to start. **方法一:**点击控制台下的server,右击一下,点 ...
- 解决 Tomcat 启动报does not exist or is not a readable directory错误
2017-02-22 已解决,恩-.这次是真的解决完成才写的 在运行tomcat的时候,感觉部署的项目有点多,则删除了几个项目,再次启动Tomcat的时候突然报错了,如下图: 于是各种百度,找到了一篇 ...
- 解决Tomcat启动失败:严重 [main] org.apache.catalina.util.LifecycleBase.handleSubClassException 初始化组件失败
在安装和配置Tomcat的过程中,出现了Tomcat启动失败的问题. 21-Oct-2022 13:41:57.148 严重 [main] org.apache.catalina.util.Lifec ...
- 如何解决tomcat启动闪退问题
在这几天,遇到一个Tomcat启动闪退的问题,通过查阅各种资料,算是完美解决.在此分享给朋友们. 首先,确定你的问题在哪里 1.查询错误:win+R 输入cmd,进入一般处理程序.通过cd 找到你To ...
- 解决tomcat启动闪退问题
通过自己的实践和查阅资料,完美解决一下问题.分享给需要的朋友. 遇到问题所在 tomcat启动后,黑窗口一闪而过. 原因分析 缺少JAVA_HOME 或者缺少JRE_HOME,说明你的环境变量不对,或 ...
- tomcat8打开闪退_如何解决tomcat启动闪退的問題
tomcat的运行需要JRE,一般启动闪退都是因为找不到JRE,也就是说环境安装JDK时环境变量没有配置好. 我们首先打开"命令提示符"窗口,输入java命令,城市jDK是否安装, ...
- 解决Tomcat启动时出现的The APR based Apache Tomcat Native library异常
现在用的tomcat6.0,不知道大家注意没有,在启动的时候,那个启动窗口最上面出现这样一条信息: 信息: The APR based Apache Tomcat Native library whi ...
- 终极方法--解决Tomcat启动闪退
首先找到tomcat下的bin目录包的startup.bat文件 右击点击编辑,在其最后一行加上pause 一.环境配置问题 双击start.up,如果出现下图的情况就证明jdk环境没有配置好 接着回 ...
- 完美解决Tomcat启动一闪而过
目录 前言 一.解决方案 1.Java环境变量没配置. 2.端口被占用 3.黑窗口报错,百度一下你就知道 4.JDK问题 4.1 两种解决方案 前言 作为一个多年(>1)经验的开发,帮朋友部署项 ...
最新文章
- 转帖:硬盘生产全过程(图)
- 使用浏览器wpf应用程序时访问数据库需要报权限错误的解决方法
- 解密京东618大促数据库运维的攻守之道
- 车载DMI linux系统,基于嵌入式的CTCS3级车载DMI系统的设计与实现
- android studio gradle 配置copy,Mac系统配置Android Studio的gradle命令
- 推荐 12 个好用的 React 的开源项目,开发效率又能提升了!
- 【视频】vue指令之@click及其stop修饰符
- ASP.NET_读写Cookie
- 读古诗系列--(两首)题都城南庄/江楼感旧
- 【转】软件工程能力漫谈:比质量更重要的,是项目管理能力
- 【2017年第1期】大数据能力开放平台创新和发展
- STM32CubeIDE教程-现场表达式切换数字进制表示
- 【es】ClassNotFoundException: org.elasticsearch.plugins.ExtendedPluginsClassLoader
- 联想拯救者Legion Y7000P 2020款(10代INTEL+GTX1650)安装ubuntu16.04(双系统)
- C#分布式缓存二:Asp.Net中使用Couchbase
- ALV 行、列、单元格颜色设置
- 软件设计师历年c语言算法,2021年历年软考软件设计师真题押题分析.doc
- 无线通信设备安装工程概预算编制_安装造价工程 电气安装预算编制
- 机器学习面试150题:不只是考SVM xgboost 特征工程
- 排坑·IPhoneIOS中不兼容正则中的断言匹配
热门文章
- 基金指数温度怎么算_10分钟学会计算指数温度,挑选指数基金
- 计算机专业跨考为什么考不了,浙江大学计算机专业考研,为什么这么多跨考计算机...
- 2022考研数学 张宇 基础班【配套张宇30讲】【免费分享】
- linux iio 设备驱动,FS4412开发板使用Linux IIO驱动框架实现ADC驱动
- 服务器inetpub是什么文件夹,inetpub是什么文件夹?Win10怎么删除c盘下的inetpub文件夹?...
- CoAP协议学习——CoAP基础
- Android在xml文件中设置颜色透明度
- java maven导入_Eclipse导入Maven项目详解(新手初学)
- Redis学习笔记(五)——持久化及redis.conf配置文件叙述
- 发票信息批量提取到 excel 软件 4.0