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分钟啊。

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

在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

作者: Candyメ奶糖

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
博文来源广泛,如原作者认为我侵犯知识产权,请尽快给我发邮件 359031282@qq.com联系,我将以第一时间删除相关内容。

目录
相关文章
|
8月前
|
SQL 关系型数据库 MySQL
CentOS部署JAVA程序、安装Tomcat以及安装导入mysql文件的方法
CentOS部署JAVA程序、安装Tomcat以及安装导入mysql文件的方法
|
Java 应用服务中间件 Linux
Centos7安装JDK和Tomcat详细步骤
Centos7安装JDK和Tomcat详细步骤
351 0
Centos7安装JDK和Tomcat详细步骤
|
Ubuntu Java 应用服务中间件
阿里云Linux(Centos和Ubuntu)系统下安装Tomcat并配置
阿里云Linux(Centos和Ubuntu)系统下安装Tomcat并配置
345 0
阿里云Linux(Centos和Ubuntu)系统下安装Tomcat并配置
|
NoSQL 关系型数据库 MySQL
阿里云服务器(centos7.3)上安装jdk、tomcat、mysql、redis
平时我们敲的项目,只能在本地浏览,不论项目写得怎么样只有自己看得到,只有发布到了云服务器,别人才能访问得到。学习之路就是这样,当别人能访问自己的项目时,会更有成就感,所以接下来就一起看看阿里云服务器的购买以及各种环境的安装。
阿里云服务器(centos7.3)上安装jdk、tomcat、mysql、redis
|
Java 应用服务中间件 开发工具
基于centos7.5安装tomcat
基于centos7.5安装tomcat
194 0
|
缓存 Oracle Java
阿里云CentOs7下安装JDK、Tomcat详细步骤教程
初学java的时候会充满各种疑惑,对java的体系及其使用的不了解,往往导致开发环境部署的失败,亦或者后面继续学习蹦出一些问题。现在记录一下自己所学,以便后面捡起java从头复习。
940 0
|
应用服务中间件 Linux Android开发
Linux(CentOs7) 安装 tomcat9 实现eclipse热部署配置
开始接触mavenweb项目,自己试着使用ECS配置了tomcat9实现了一下eclipse中的项目热部署,下面是心得体会:首先,创建好自己的mavenWeb项目。然后就是在服务器中配置Tomcat了。
1472 0
|
Web App开发 Linux 应用服务中间件
|
Java 应用服务中间件 Linux

热门文章

最新文章