Tomcat启动慢的原因及解决方法

在CentOS启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥。

1.具体报错如下:

  1. 22-Apr-2019 19:33:07.623 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of
  2. SecureRandom instance for session ID generation using [SHA1PRNG] took [55,507] milliseconds.
  3. 22-Apr-2019 19:33:07.653 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web appli
  4. cation directory /home/apache-tomcat-8.0.27/webapps/ROOT has finished in 55,935 ms

 

主要原因是生成随机数的时候卡住了,导致tomcat启动不了。

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

  1. [root@pre1 tools]# cat /proc/sys/kernel/random/entropy_avail
    20

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

2.解决方法一

  1. vim $JAVA_HOME/jre/lib/security/java.security
  2.  
  3. securerandom.source=file:/dev/random
  4.  
  5. 改为
  6.  
  7. securerandom.source=file:/dev/urandom

3.解决方法二

  1. vim $TOMCAT_HOME/bin/catalina.sh
  2.  
  3. if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
  4.  
  5. JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
  6.  
  7. fi

这个系统属性egd表示熵收集守护进程(entropy gathering daemon)

4.解决方法三

  1. yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
  2.  
  3. systemctl start rngd # 启动服务

查看启动状态

  1. [root@pre1 ~]# systemctl status rngd
  2. rngd.service - Hardware RNG Entropy Gatherer Daemon
  3. Loaded: loaded (/usr/lib/systemd/system/rngd.service; enabled; vendor preset: enabled)
  4. Active: active (running) since Wed 2019-05-15 10:15:54 CST; 4s ago
  5. Main PID: 1540 (rngd)
  6. CGroup: /system.slice/rngd.service
  7. └─1540 /sbin/rngd -f
  8.  
  9. May 15 10:15:54 RAP systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
  10. May 15 10:15:54 RAP systemd[1]: Starting Hardware RNG Entropy Gatherer Daemon...
  11. May 15 10:15:54 RAP rngd[1540]: Initalizing available sources
  12. May 15 10:15:54 RAP rngd[1540]: Failed to init entropy source 0: Hardware RNG Device
  13. May 15 10:15:54 RAP rngd[1540]: Failed to init entropy source 2: Intel RDRAND Instruction RNG
  14. May 15 10:15:56 RAP rngd[1540]: Enabling JITTER rng support

Tomcat启动慢的原因及解决方法的更多相关文章

  1. 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法

    旧版提示:"CLodop云打印服务(localhost本地)未安装启动!"新版提示:"Web打印服务CLodop未安装启动,点击这里下载执行安装(若此前已安装过,可点这里 ...

  2. (转)(VS2013 )由于应用程序配置不正确,程序未能启动”--原因及解决方法

    今天把别人的程序拿过来编译时通过,但是运行的时候,提示:由于应用程序配置不正确,程序未能启动 搜了一下,各种方法.最终通过下面的方法解决的. 项目--->配置属性---->链接器----& ...

  3. Tomcat启动时shell窗口乱码解决方法

    tomcat/conf/目录下,修改logging.properties java.util.logging.ConsoleHandler.encoding = utf-8 更改为 java.util ...

  4. Apache -- XAMPP Apache 无法启动原因及解决方法

    XAMPP Apache 无法启动原因1(缺少VC运行库): 这个就是我遇到的问题原因,下载安装的XAMPP版本是xampp-win32-1.7.7-VC9,而现有的Windows XP系统又没有安装 ...

  5. 应用程序无法正常启动提示错误0xc000007b 问题的原因和解决方法

    应用程序无法正常启动提示错误0xc000007b 问题的原因和解决方法 前提条件: 你使用的是VS201x软件编写程序,你使用的电脑是X64位的,并且你在使用OpenCV库.你编写的程序可以正常编译, ...

  6. qt 旧项目编译运行提示 “启动程序失败,路径或者权限错误?” 原因及解决方法

    qt 旧项目编译运行提示 "启动程序失败,路径或者权限错误?" 原因及解决方法 原因 Qt Creator在打开项目文件的同时会生成.pro.user文件,.pro.user文件叫 ...

  7. tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start.

    tomcat启动失败问题排除及解决办法 Server Tomcat v7.0 Server at localhost failed to start. 导致上面问题的原因可能有很多种,每种的解决办法都 ...

  8. 出现 java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法

    一.原因及解决方法[1] 1.原因:堆内存的永久保存去区内存分配不足(缺省默认为64M),导致内存溢出错误. 2.解决方法:重新分配内存大小,-Xms1024M -Xmx2048M -XX:PermS ...

  9. 出现 java.net.ConnectException: Connection refused 异常的原因及解决方法

    1 异常描述 在启动 Tomcat 服务器的时候,控制台一直输出异常信息,然后停止服务器,报出如下异常: 2 异常原因 通过观察上图中被标记出来的异常信息,咱们可以知道 java.net.Connec ...

随机推荐

  1. 测试常用命令之awk篇

    awk/gawk 1,内置变量 FILENAME:输入文件名称 FNR:当前数据文件中的数据行数 NF:数据文件中的字段总数 NR:已处理的输入数据行数目 FS:输入数据段分隔符 RS:输入数据行分隔 ...

  2. 8.并发编程--多线程通信-wait-notify-模拟Queue

    并发编程--多线程通信-wait-notify-模拟Queue 1. BlockingQueue 顾名思义,首先是一个队列,其次支持阻塞的机制:阻塞放入和获取队列中的数据. 如何实现这样一个队列: 要 ...

  3. ORACLE 错误案例—ORA-27102: out of memory

    SQL> startupORA-27102: out of memoryLinux-x86_64 Error: 28: No space left on deviceAdditional inf ...

  4. bind标签_databaseId标签,_parameter标签的使用

    1.在接口写方法 public List<Employee> getEmpsTestInnerParameter(Employee employee); 2在映射文件中进行配置 <s ...

  5. 【命令汇总】Windows 应急响应

    日期:2019-06-07 16:11:49 作者:Bay0net 介绍:Windows 应急响应.取证及溯源相关内容学习记录 0x00.前言 常见的应急分类: web入侵:网页挂马.主页篡改.Web ...

  6. 【ABAP系列】SAP ABAP 关于四舍五入算法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 关于四舍五入算 ...

  7. 【Linux开发】Linux动态链接库搜索路径问题

    说明:下列内容是从网上获取的,未经验证,仅作参考之用 动态库的搜索路径搜索的先后顺序是: (1).编译目标代码时指定的动态库搜索路径:(2).环境变量LD_LIBRARY_PATH指定的动态库搜索路径 ...

  8. Go语言入门篇-jwt(json web token)权限验证

    一.token.cookie.session的区别 1.cookie Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie. 内存Cookie由浏览器维护, ...

  9. Git 的使用及其一些基本用法

    打开你的git-bash 绑定用户和邮箱作为标识 $ git config --global user.name "your name" $ git config --global ...

  10. supervisor启动elk7.4.0组件

    es [program:elasticsearch] command = /srv/app/elk/elasticsearch/bin/elasticsearch autostart = true s ...