Tomcat启动速度慢的优化方法

转载 2017年10月12日 17:47:39

今天启动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启动慢或失败。
#影响随机数的强度的是生成用的熵,具体含义可以自己度娘 查下,不在这里细说了。

查看是否有足够的熵来用于产生随机数,可以通过如下命令来查看
[root@qiuyuetao 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)

Tomcat 启动速度优化

本文简单介绍如何让 Tomcat 更快启动, 同时提供一些建议。 我们碰到过JVM被卡了200多秒的情况, 所以才翻译了这篇文章, 【MAVEN的某些插件也可能依赖 `SecureRandom`】。 ...
  • renfufei
  • renfufei
  • 2017年04月27日 20:36
  • 1556

FineReport性能调优的一些办法

FineReport性能调优的基本思路,就要对应用服务器的内存大小进行合理的设置。        一般服务器默认的内存配置都比较小,在较大型的应用项目中,这点内存是不够的,因此需要加工使其调大。 ...
  • yuanziok
  • yuanziok
  • 2015年03月24日 14:15
  • 3850

nginx或tomcat的性能优化调整详解

性能优化对于服务器来讲肯定是做得越合理越好了,下文我来为各位整理一篇关于nginx或tomcat的性能优化调整例子,有兴趣的朋友不防和小编一来看看吧。 最近花了一点时间进行了NGINX加TO...
  • joeyon
  • joeyon
  • 2015年06月21日 21:43
  • 2071

Android性能优化系列之App启动优化

Android性能优化系列之布局优化Android性能优化系列之内存优化Android性能优化系列之apk瘦身应用的启动速度缓慢是我们在开发过程中经常会遇到的问题,比如启动缓慢导致的黑屏,白屏问题,本...
  • u012124438
  • u012124438
  • 2017年02月22日 00:23
  • 6374

彻底找到 Tomcat 启动速度慢的元凶

问题现象美女同事找我解决一个问题,说Tomcat启动很慢。开始我以为是程序写的问题,所以把webapps下所有程序都删除掉。(只保留Tomcat自带)灵异的事情发生了,Tomcat停止在—— 我...
  • u013939884
  • u013939884
  • 2017年06月04日 17:51
  • 9979

Tomcat 启动速度慢,一直转圈的原因

问题现象在新安装的centos7 系统上Tomcat启动很慢。开始我以为是程序写的问题,所以把webapps下所有程序都删除掉。(只保留Tomcat自带)灵异的事情发生了,Tomcat停止在——彻底找...
  • chenshijie2011
  • chenshijie2011
  • 2017年10月13日 09:26
  • 120

MS SQL Server查询优化方法 查询速度慢的原因很多,常见如下几种

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有创建计算列导致查询不优化。  4、内存不足  5、网络速度慢  6...
  • nanchangniat
  • nanchangniat
  • 2013年12月14日 15:27
  • 939

SQL Server数据库查询速度慢原因及优化方法

数据库查询慢的分析   查询速度慢的原因:   1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2、I/O吞吐量小,形成了瓶颈效应。     3、没有创...
  • hustwht
  • hustwht
  • 2016年08月08日 23:30
  • 1027

SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有创建计算列导致查询不优化。  4、内存不足  5、网络速度慢  6、查询出的...
  • huanyinghanlang
  • huanyinghanlang
  • 2017年02月10日 15:53
  • 240

SQL Server查询优化方法(查询速度慢的原因很多,常见如下几种)

1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有创建计算列导致查询不优化。  4、内存不足  5、网络速度慢  6...
  • cjsyr_cjsyr
  • cjsyr_cjsyr
  • 2016年12月19日 11:42
  • 458
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tomcat启动速度慢的优化方法
举报原因:
原因补充:

(最多只允许输入30个字)