zoukankan      html  css  js  c++  java
  • Centos 7 启动 Tomcat 7、8 慢的问题

    查看原因

    首先查看日志信息,查看因为什么而启动慢

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

    日志信息

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

    从日志中得出:主要原因是生成随机数的时候卡住了,导致tomcat启动不了。

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

    方法一

    vim $JAVA_HOME/jre/lib/security/java.security
    
    securerandom.source=file:/dev/random
    
    改为
    
    securerandom.source=file:/dev/urandom
    

    方法二

    vim $TOMCAT_HOME/bin/catalina.sh
    
    if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
    
        JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
    
    fi
    
    这个系统属性egd表示熵收集守护进程(entropy gathering daemon)
    

    方法三

    安装rng
    
    yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
    
    cp /usr/lib/systemd/system/rngd.service /etc/systemd/system
    vim /etc/systemd/system/rngd.service
    
    #以下是编辑内容
    ExecStart=/sbin/rngd -f -r /dev/urandom
    
    systemctl start rngd  # 启动服务
    

    经过上面的修改,我们再观察 cat /proc/sys/kernel/random/entropy_avail 基本上在 3000 左右。这个时候重新启动 Tomcat,发现启动时间正常。

    参考资料:https://www.cnblogs.com/lyq863987322/p/7891984.html

  • 相关阅读:
    进程通信
    Python爬虫获取随机的UserAgent的两种方法
    Chrome插件【请停用以开发者模式运行的扩展程序】的提示解决方案
    FCFS,SJF,HRRN调度算法总结分析(全)
    进程控制
    进程的状态和转换
    进程的调用
    系统调用
    终端和异常
    今日份崩溃——时刻注意细节
  • 原文地址:https://www.cnblogs.com/winstom/p/10058788.html
Copyright © 2011-2022 走看看