CentOS环境下tomcat启动超级慢的解决方案

在本地开发环境,应用正常启动。

在CentOS测试环境,应用启动速度也是正常的。

但是在阿里云的生产环境,tomcat启动超级慢,并且在最终打印出来以下内容:

org.apache.catalina.util.SessionIdGenerator createSecureRandom
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [152,149] milliseconds.

152秒,这可以就是2分钟啊。并且如果多次启动,可能需要等待更久,有几次上线只是在启动时等待了5分钟多。

经过百度,发现是Tomcat
7/8使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的实例作为会话ID时,由于堵塞,造成时间上的消耗。

解决方案如下,由于第一种需要修改catalina.sh,在生产环境没有尝试。而是采用的第二种的方式。
有两种解决办法:
1)在Tomcat环境中解决
可以通过配置JRE使用非阻塞的Entropy Source。
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 即可。
加入后再启动Tomcat,整个启动耗时下降到Server startup in 2912 ms。
2)【已验证】在JVM环境中解决
打开$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom

时间: 2024-08-01 00:13:13

CentOS环境下tomcat启动超级慢的解决方案的相关文章

tomcat启动时 过高-linux环境下tomcat启动时CPU过高

问题描述 linux环境下tomcat启动时CPU过高 我从tomcat官方网站上下载了一个tomcat7,然后上传到linux环境下解压,然后启动tomcat(没有部署任何项目), CPU瞬间就达到100%,请高手帮忙解释下,是什么原因 解决方案 性能调优:http://blog.chinaunix.net/uid-26204366-id-3896703.html 解决方案二: http://www.linuxidc.com/linux/2014-07/104753.htm 解决方案三: ht

Windows环境下Tomcat启动窗口标题中文乱码

问题描述 Windows环境下Tomcat启动窗口标题中文乱码 在windows环境下,如果生产环境一台机子上多个tomcat部署多个系统,tomcat全部启动后不知道是哪个具体系统的控制台,通过修改了catalina.bat里的title的默认Tomact标题为系统名称,如果为中文就乱码,点击startup.bat启动tomcat的窗口标题栏修改为中文乱码,求高手解决

CentOS环境下单独安装apachebench的方法_服务器其它

本文实例讲述了CentOS环境下单独安装apachebench的方法.分享给大家供大家参考,具体如下: 这两天在测试php性能优化方法. 为了做压力测试可观察效果,就选择了ApacheBench来作为压力测试工具.其实就是大家常说的ab. 但是这个工具是安装apache web server的时候自带的,现在我服务器上都是跑nginx.也不想为了用这个工具就再装个apache.所以在用下面方法单独安装ab工具,这里记录下步骤. 首先安装ab运行需要的软件包apr-util yum install

CentOS环境下通过YUM安装软件的步骤

为了提升用户在云服务器上的软件安装效率,减少下载和安装软件的成本,腾讯云提供了Yum下载源.在CentOS环境下,用户可通过YUM快速安装软件. 对于Yum下载源,不需要添加软件源,可以直接安装软件包. 1. 安装步骤 1. 登录操作系统为CentOS6.2的云服务器后,默认已获取root权限:注意:严禁执行password命令,root密码默认不能被修改.  2. 在root权限下,通过命令 yum install 来安装软件,示例如下: 3. 系统会自动搜索相关的软件包和依赖关系,并且在界面

centos环境下dns-bind9主从服务器配置

环境:centos  6.5 64bit  192.168.1.9(主)  192.168.1.10(从) 软件版本:bind9 前期准备:关闭防火墙(或放行UDP TCP的53 953端口),关闭selinux. 主服务器配置这里就不再介绍说明,可以查看之前的步骤.这里只记录下从服务器配置. 1,安装bind并设置开机启动. yum install  bind   -y 设置开机启动,默认不是开机启动. chkconfig named on  2,配置从服务器的bind配置文件.这里除了IP地

CentOS环境下使用GIT基于Nginx的私服搭建全过程

阅读本文前你必须预先装好CentOS并且已经安装和配置好Nginx了. 安装GIT私服套件 安装centos6.5-centos7.0 安装nginx yum install -y?git gitweb spawn-fcgi?fcgi-devel?fcgi 以上步骤执行完毕后,我们安装了: git服务 Gitweb,因为git是一个光板,只支持 git clone gituser@hostname:/repositories这样的协议,对于eclipse开发者来说键入一堆的git 命令将会是一个

CentOS系统下手动启动oracle数据库方法

一.在Linux下启动Oracle 登录到CentOS,切换到oracle用户权限 #  su – oracle 接着输入: $  sqlplus "/as sysdba" 原本的画面会变为 SQL> 接着请输入 SQL>  startup 就可以正常的启动数据库了. 另外停止数据库的指令如下: SQL>  shutdown immediate

centos环境下lnmp安装配置_Linux

安装依赖库和开发环境 复制代码 代码如下: #依赖库和开发工具 yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel cu

Centos 6和Centos 7下服务启动方法及添加到开机启动项的方法_Linux

在linux系统中,安装完一个软件或应用后,有时候需要手动启动该应用,也需要收到将该应用添加到开机启动项中,让其可以能够在linux一开机后就加载该应用 启动应用的方法 CentOS 6 : service SERVICE start|stop|restart|reload|status CentOS 7 : systemctl start|stop|restart|reload|status SERVICE 添加到开机启动项的方法 CentOS 6 : chkconfig SERVICE on