zoukankan      html  css  js  c++  java
  • 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

    用云栖社区APP,舒服~

  • 相关阅读:
    字符编码之间的转换 utf-8 , gbk等,(解决中文字符串乱码)
    信号分帧的三种实现方法及时间效率对比
    倒谱Cepstrum本质的理解
    Matlab 中 arburg 函数的理解与实际使用方法
    包络提取的两种方法-希尔伯特变换 和 局部峰值检测
    卡尔曼滤波的自我理解
    随机生成一个长度为n的数组
    JS 数字取整等操作
    vue 跳转路由新开页
    el-form 相关自定义校验
  • 原文地址:https://www.cnblogs.com/jzy996492849/p/7054101.html
Copyright © 2011-2022 走看看