ubuntu下tomcat启动巨慢分析

在一个ubuntu14新环境部署tomcat,通过CI启动一个应用时,启动耗时达到15分钟之久。仔细看tomcat输出的耗时统计日志发现如下日志:

Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took[97431]

在stackoverflow上逛了一会发现如下解释:

http://stackoverflow.com/questions/26431922/tomcat7-starts-too-late-on-ubuntu-14-04-x64-digitalocean/26432537#26432537

试了下,问题解决了。那么为什么有的机器上会这样,而有的机器正常呢?参考:http://en.wikipedia.org/wiki//dev/random#Linux

问题的核心指向随机密码生成器中,关于环境噪音采集部分的处理。所谓环境噪音,就是来自各个设备驱动与其它来源的二进制数据,也称之为熵。熵池则是存储这些噪音数据的地方。当熵池为空的时候,采用/dev/random会存在阻塞。

但是,检查环境配置,安装的java是采用/dev/urandom进行处理。其模式是熵池为空时,非阻塞。很显然,还不止如此,从stackoverflow链接中可以找到一段描述,解释了为何jdk用了/dev/urandom,但是还是不生效。

随机数生成器,基于SHA1PRNG。而SHA1PRNG重度依赖高质量的种子,如果种子不够好,随机数结果将可被预测。因此开发人员需要确保/dev/random被用作熵的来源,即便JVM配置为使用/dev/urandom。

所以切换熵源为/dev/urandom,也需要确保/dev/random有足够的熵。如果系统有硬件RNG,通过安装rng-tools能够提供足够的熵。否则就需要安装haveged来提供一个足够好的熵来源而不依赖硬件的RNG。在虚拟机中,rng-tools能够从主机中获取虚拟硬件RNG来提供熵。EGD作为此环境下的一个替代,但是在ubuntu的资源库内,没有提供此软件支持,所以就存在隐患。

时间: 2024-10-18 19:03:27

ubuntu下tomcat启动巨慢分析的相关文章

MyEclipse 下 Tomcat启动变慢如何解决

MyEclipse   下  Tomcat启动变慢如何解决 项目使用debug启动有时候会突然变得非常慢.不但启动慢,启动之后连打开项目页面也很慢,是日常的4,5倍.可以有下面的几种解决方法: 1. 由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务器里的工程全部启动,工程多了自然启动时间就慢,所以可以把以前的删除:tomcat安装目录\jakarta-tomcat-6.029webapps在   webapps  目录下把会看到以前的工程都删除了 2. 可能

Linux下Tomcat启动后显示控制台

Linux下Tomcat启动后显示控制台: 采用 ./startup.sh 启动,则没有显示控制台. 要像windows一样显示控制台,则 : ./catalina.sh run

ubuntu下memcached启动停止脚本

工作需求,需要自己写一个memcached的启动停止脚本,呕心沥血,终于完成,虽然很搓很搓,还是记录一下吧,废话不多说直接上脚本 #! /bin/sh # ckconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/memcached.conf # Source function library -

CentOS7.4 系统下 Tomcat 启动慢解决方法

CentOS7.4 系统下 Tomcat 启动慢解决的方法 首先查看日志信息,查看因为什么而启动慢 在CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥.为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥. 22-Apr-2017 19:33:07.623 INFO [localhost-startS

解决MyEclipse下Tomcat启动变慢的方法

 最近感觉用myeclipse启动tomcat的时间越来越长..不但启动慢并且启动后打开的页面也慢,经过查找找到以下解决办法.. 1.由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务器里的工程全部启动,工程多了自然启动时间就慢,所以可以把以前的删除:tomcat安装目录D:\Tomcat\apache-tomcat-7.0.37\webapps在   webapps目录下把会看到以前的工程都删除了. 2.可能是因为eclipse和tomcat的交互而产生

linux环境下tomcat启动成功,请求页面出现404

这种情况很多,本文记录我遇到比较奇葩的情况. 第一次tomact启动成功,访问404,乱捣鼓不知怎么好了:第二次tomcat启动成功,可以访问部分链接,有些却报404,但是代码和数据都还是以前的,没有变.很奇怪! 经常同事指点,查清原因: 请求tomcat里的jsp,tomcat会自动在work目录下生产相关jsp文件,web访问的是work里的,而不是webapps里的.之所以出现我这种情况,是因为tomcat一开始是用一般用户启动的,请求了几个页面后再用root启动,再请求几个页面后又变成一

?MyEclipse下Tomcat启动变慢的解决方法

项目忽然使用debug启动有时候会突然变得非常慢.不但启动慢,启动之后连打开项目标页面也很慢,是日常平凡的4,5倍.可以有下面的几种解决方法:1.由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务器里的工程全部启动,工程多了自然启动时间就慢,所以可以把以前的删除:tomcat安装目录\jakarta-tomcat-6.029webapps在webapps目录下把会看到以前的工程都删除了.2.可能是因为eclipse和tomcat的交互而产生的,在以debug模

ubuntu下tomcat监视运行进度方法

如果你一直在Windows下使用Tomcat,那么你一定会知道:在运行Tomcat的时候,会弹出新的控制台窗口,然 后相关的服务器状态信息以及程序运行过程中输出的信息都会在这个新窗口中显示出来.但是到了Linux,自带的shell文件并不会打开一个新的终端窗 口,这使得一些Linux新手(包括我)调试程序的时候遇到不少麻烦.这个问题该如何解决呢?首 先,我们得知道那些在Windows的控制台中显示的信息到现在都跑到哪里去了.这个问题不难,就在logs目录的两个文件中,一个是 catalina.o

CentOS7下Tomcat启动慢的原因及解决方案

现象 在一次CentOS 7系统中安装Tomcat,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的.Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥.为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥. 20-Jul-2017 02:54:56.797 INFO [localhost-startStop-1] org.apache.catalina.startup.HostCon