首页主机资讯centos上如何解决tomcat启动慢

centos上如何解决tomcat启动慢

时间2025-12-19 23:22:03发布访客分类主机资讯浏览560
导读:CentOS 上 Tomcat 启动慢的定位与解决 一、快速定位是否由熵不足导致 查看 Tomcat 启动日志,若出现类似日志: org.apache.catalina.util.SessionIdGeneratorBase.create...

CentOS 上 Tomcat 启动慢的定位与解决

一、快速定位是否由熵不足导致

  • 查看 Tomcat 启动日志,若出现类似日志:
    org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance … took [55,507] milliseconds
    多半是生成 SecureRandom 的熵不足所致。
  • 检查系统熵值:
    cat /proc/sys/kernel/random/entropy_avail
    数值通常低于 100 时更容易出现阻塞。
  • 对比阻塞与非阻塞随机源速度:
    cat /dev/random | od -x | head -n 1
    cat /dev/urandom | od -x | head -n 1
    若前者明显更慢,即可确认是熵瓶颈。

二、优先方案 增加系统熵或改用非阻塞熵源

  • 安装并启动硬件随机数服务(推荐):
    yum install -y rng-tools
    systemctl start rngd
    systemctl enable rngd
    如 CPU 支持 RDRAND,rngd 会使用硬件源加速熵池填充。
  • 在 Tomcat 启动参数中指定熵源(无需改 JDK 文件):
    编辑 $TOMCAT_HOME/bin/catalina.sh,在文件靠前位置加入:
    JAVA_OPTS=“$JAVA_OPTS -Djava.security.egd=file:/dev/urandom”
  • 直接修改 JDK 安全配置(可选):
    编辑 $JAVA_HOME/jre/lib/security/java.security,将
    securerandom.source=file:/dev/random
    改为
    securerandom.source=file:/dev/urandom
    某些 JDK/版本上也可写为 /dev/./urandom 以绕过内置替换规则。
  • 风险提示:/dev/urandom 为非阻塞源,安全性略低于 /dev/random;在绝大多数 Web 应用场景下可接受,若对随机强度有极高要求,应优先采用 rngd 增加熵池。

三、Tomcat 配置与 JVM 层面的优化

  • 连接器与线程模型:
    使用 NIOAPR 提升 I/O,合理设置线程与队列,示例:
  • 启用压缩以减少后续网络传输开销:
    compression=“on” compressionMinSize=“2048”
    compressableMimeType=“text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json”
  • JVM 内存与 GC(示例,按机器内存调整):
    JAVA_OPTS=“-server -Xms2g -Xmx2g -XX:+UseG1GC -Djava.awt.headless=true -Dfile.encoding=UTF-8”
  • 精简应用与自动部署:
    删除 webapps 下不需要的应用(如 examples、docs、host-manager),必要时将 Host 的 autoDeploy/deployOnStartup 设为 false,减少启动扫描与部署耗时。

四、系统与内核层面的优化

  • 文件描述符与内核网络参数:
    /etc/security/limits.conf 增加:
    • soft nofile 65536
    • hard nofile 65536
      /etc/sysctl.conf 增加:
      net.core.somaxconn 65535
      fs.file-max 65536
      执行 sysctl -p 使配置生效。
  • 透明大页(THP):部分环境下会拖慢 JVM 初始化,建议禁用:
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    如需持久化,可加入 /etc/rc.local 或 systemd 服务。

五、验证与回退建议

  • 重启 Tomcat 并观察日志,确认是否仍有
    “Creation of SecureRandom instance … took” 的长耗时;
    再次查看 entropy_avail,应明显高于之前的数值。
  • 若修改了 java.security,建议保留原始行并添加注释,便于回退;
    若使用 -Djava.security.egd,可直接移除该参数恢复默认熵源。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos上如何解决tomcat启动慢
本文地址: https://pptw.com/jishu/776786.html
CentOS Apache如何优化脚本执行速度 centos下tomcat备份如何操作

游客 回复需填写必要信息