centos tomcat启动慢怎么加速
导读:CentOS 上 Tomcat 启动慢的定位与加速 一、先快速定位瓶颈 查看 catalina.out 与 localhost-startStop-1 日志,若出现类似: “Creation of SecureRandom instanc...
CentOS 上 Tomcat 启动慢的定位与加速
一、先快速定位瓶颈
- 查看 catalina.out 与 localhost-startStop-1 日志,若出现类似:
“Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [55,507] milliseconds”,基本可判定为熵池不足导致随机数生成阻塞。 - 检查系统熵值:
cat /proc/sys/kernel/random/entropy_avail
若数值很低(如个位数),说明熵源不足,会显著拖慢启动。
二、优先解决熵源瓶颈(见效最快)
- 安装并启动熵服务 rng-tools(推荐,安全且可持续供给熵):
yum install -y rng-tools
systemctl start rngd
systemctl enable rngd
如 CPU 支持 RDRAND,rngd 会用硬件熵源加速。 - 临时方案 A:修改 $JAVA_HOME/jre/lib/security/java.security
将 securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/urandom - 临时方案 B:在 $CATALINA_HOME/bin/catalina.sh 的 JAVA_OPTS 中增加
-Djava.security.egd=file:/dev/urandom
说明:/dev/urandom 为非阻塞熵源,能显著缩短 SecureRandom 初始化时间;rngd 方案更稳妥,适合生产。 - 验证:重启 Tomcat,观察日志中 SecureRandom 初始化耗时是否从“秒级/数十秒级”降到“毫秒级”。
三、减少应用扫描与部署开销
- 清理 webapps 下不需要的应用(如 docs、examples、host-manager、manager),减少类加载与扫描。
- 优化 server.xml 的 Host 配置,降低启动时自动部署压力:
- 若日志出现 “Skipping unneeded JARs during scanning can improve startup time and JSP compilation time”,说明有大量 JAR 被无谓扫描。可:
- 精简打包,移除无用依赖;
- 按需配置 TLD/JSP 扫描范围,避免全量扫描。
四、Tomcat 与 JVM 参数优化
- 连接器与 I/O:使用 NIO 提升并发与启动阶段的连接处理能力。
示例:
- JVM 内存起步:在 catalina.sh 中设置合理的堆与栈,避免频繁扩容带来的抖动:
JAVA_OPTS=“$JAVA_OPTS -Xms1024m -Xmx1024m -Xss512k -Djava.awt.headless=true” - 说明:内存应与物理内存匹配,生产环境建议固定堆大小(Xms=Xmx),减少 GC 与扩容开销。
五、系统层面与内核参数优化
- 文件描述符限制:编辑 /etc/security/limits.conf
- soft nofile 65536
- hard nofile 65536
- 内核网络与文件句柄:编辑 /etc/sysctl.conf
net.core.somaxconn 65535
net.ipv4.tcp_tw_reuse 1
fs.file-max 65536
执行 sysctl -p 使配置生效。 - 透明大页(THP):部分环境下会拖慢 JVM 初始化,建议禁用:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
如需持久化,可加入开机启动脚本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos tomcat启动慢怎么加速
本文地址: https://pptw.com/jishu/765378.html
