Tomcat 启动慢 如何优化?

今天启动Tomcat,发现启动很慢,需要几分钟,这个问题值得重视,所以就去查看日志,发现耗时是session引起随机数问题导致的。Tomcat的Session ID通过SHA1算法计算得到的,计算Session ID的时候必须有1个秘钥,为了提高安全性Tomcat在启动的时候通过随机数生成秘钥。

一、环境介绍

系统版本:CentOS 7.2

软件版本:Tomcat 8

二、日志分析,排查原因

日志如下:

4-Mayr-2017  8:07:49 .623 INFO[localhost-startStop-1]org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of
 SecureRandominstance for session ID generation using [SHA1PRNG] took [55,507] milliseconds.
4-Mayr-2017  8:07:49 .653 INFO[localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectoryDeployment of web appli
cation directory/application/apache-tomcat-8.0.27/webapps/ROOT has finished in 165,935 ms

主要原因:

就是通过随机数生成秘钥的时候卡住了,导致Tomcat启动慢或失败。

#影响随机数的强度的是生成用的熵,具体含义可以自己度娘 查下,不在这里细说了。

查看是否有足够的熵来用于产生随机数,可以通过如下命令来查看

[[email protected] tools]# cat/proc/sys/kernel/random/entropy_avail
7

为了加速/dev/random提供随机数的速度,你可以通过操作设备的外设,让其产生大量的中断(如网络传输数据,按键,移动鼠标,在命令行敲几个不同的命令,俗称聚气

cat /dev/random  ##可以消耗能量

三、处理及优化

解决方法有3种;

方法1:使用rngd 软件增大熵池 *****建议使用

grep  rdrand /proc/cpuinfo #需要cpu支持 
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd  # 启动服务

方法2:java环境下修改配置文件

vim $JAVA_HOME/jre/lib/security/java.security
securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/urandom

方法3:可以通过配置JRE使用非阻塞的Entropy Source:

vim $TOMCAT_HOME/bin/catalina.sh
if [[ "$JAVA_OPTS" !=*-Djava.security.egd=* ]]; then
   JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
fi
##这个系统属性egd表示熵收集守护进程(entropy gathering daemon)
时间: 2025-01-31 02:27:59

Tomcat 启动慢 如何优化?的相关文章

Tomcat介绍及性能优化

一.Tomcat简单介绍: Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选. 版本介绍:现在版本更新到 Apache Tomcat 8.x,但是Apache Tomcat 7.x是目前开发的焦点.Apache Tomcat 7.x它在汲取了Tomcat 6.0.x优点的基础上,实现了对于Servlet 3.0.JSP 2.2和EL 2.2等特性的支持. 除此以外的改进列表如下:

Nginx、Tomcat线上环境优化配置

 Nginx.Tomcat线上环境优化配置 Nginx优化: Nginx安全方面的优化: 1. nginx安全优化,在nginx配置文件http标签段内添加"server_tokens  off"即可隐藏访问或者报错时提示web版本号信息. 2. server_tokens参数可以在http,server,location的位置添加 3. 还可以修改nginx的3个源码文件 4. 如还需要安全优化更改端口.用户. nginx 性能优化: 对于nginx配置文件中对优化比较有作用的一般为

Tomcat 配置详解/优化方案

 转自:http://blog.csdn.net/cicada688/article/details/14451541 Service.xml Server.xml配置文件用于对整个容器进行相关的配置. <Server>元素:是整个配置文件的根元素.表示整个Catalina容器. 属性: className:实现了org.apache.catalina.Server接口的类名,标准实现类是org.apache.catalina.core.StandardServer类. Port:Tomcat

MyEclipse启动和运行速度优化

1:去除不需要加载的模块 Windows – Preferences - General - Startup and Shutdown,这个时候在右侧就显示出了Eclipse启动时加载的模块,可以根据自己的实际情况去除一些模块. WTP:一个跟myeclipse差不多的东西,主要差别是WTP是免费的,如果使用myeclipse,这个可以取消 Mylyn:组队任务管理工具,类似于CVS,以任务为单位管理项目进度,没用到的可以取消 Derby:一种保存成jar形式的数据库,我没用到,取消一大排以My

tomcat的配置和优化

tomcat的内存使用配置,最大连接数配置.如何修改配置呢,在/tomcat的/bin/下面有个脚本文件catailna.sh. 如果 windows 是bat设置tomcat的使用内存,其实就是设置jvm的使用参数. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. 1.JAVA_OPTS参数说明 Java代码 -server  启用jdk 的 server 版:

【技巧】Tomcat生产服务器性能优化

1. 服务器资源 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度. 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分.我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降. 2. 开启内容压缩 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout

原!tomcat启动超时(打印了几行日志,后面没了。也不报错,处于启动状态,直到超时)

项目框架:spring+struts2+mybatis 今天优化代码,改了一堆mybatis dao和xml文件,启动项目时,就出现如标题描述的状况:打印了几行日志,后面就不打印了,也不报错,处于启动状态,直到超时. 首先检查是不是tomcat有问题,发现tomcat没有问题,后来感觉应该是项目代码问题,百度了一圈,发现也有碰到这种问题的  在mybatis的Mapper配置文件里配置了两个同名的ID,但是它们参数不同,结果就出现了部署时tomcat启动不了,改了启动时间也不行. 后来看了dao

大数据技术之_30_JVM学习_01_JVM 位置+JVM 体系结构概览+堆体系结构概述+堆参数调优入门+JVM 的配置和优化+Tomcat 的配置和优化

1.JVM 位置2.JVM 体系结构概览3.堆体系结构概述4.堆参数调优入门5.JVM 的配置和优化6.Tomcat 的配置和优化 熟悉 JVM 架构与 GC 垃圾回收机制以及相应的 JVM 调优,有过在 Linux 系统下的调优经验. 淘宝的周志明<深入理解 Java 虚拟机>中说 JVM 的优化,其中 99% 优化的是堆,1% 优化的是方法区. 内地女歌手照片--李嘉欣,贴在桌面上. 1.JVM 位置 JVM 是运行在操作系统之上的,它与硬件没有直接的交互 2.JVM 体系结构概览 详解如

tomcat 启动超级慢

原地址 https://www.cnblogs.com/devilwind/p/6902037.html 今天在新环境里部署tomcat, 刚开始启动很快,关闭之后再启动,却发现启动日志打印到 00:25:14.144 [localhost-startStop-1] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 6287 ms 一直hold着,tomcat