Ubuntu下Tomcat启动加速的实用清单
一 定位瓶颈
journalctl -u tomcat9.service -b 或查看 catalina.out,若见到类似 “Creation of SecureRandom instance … took [xxx] ms” 的提示,说明启动慢主要在 SecureRandom 初始化(常见于熵源不足)。bin 目录前台启动 ./catalina.sh run,可实时看到初始化阶段停顿位置。cat /proc/sys/kernel/random/entropy_avail,数值偏低(如低于 100)时更易出现该问题。二 快速见效的修复 SecureRandom 阻塞
-Djava.security.egd=file:/dev/./urandom,例如在 bin/catalina.sh 的 JAVA_OPTS 中追加该参数。/dev/random 可用性。
sudo apt-get install -y rng-tools && sudo systemctl start rng-tools && sudo systemctl enable rng-tools$JAVA_HOME/jre/lib/security/java.security,将securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/./urandom三 调整JVM与连接器参数
catalina.sh 中配置 JAVA_OPTS,示例:
-server -Xms1024m -Xmx1024m(将 -Xms 与 -Xmx 设为相同可减少堆伸缩抖动)-XX:+UseG1GC;多核且注重吞吐可用 -XX:+UseParallelGCconf/server.xml 的 <Connector>,示例:
maxThreads="200" minSpareThreads="50" acceptCount="250"(按并发量调优)enableLookups="false"(禁用DNS反查,减少阻塞)URIEncoding="UTF-8"(避免中文乱码)-XX:MetaspaceSize 与 -XX:MaxMetaspaceSize,不要再用 -XX:PermSize/MaxPermSize。四 精简应用与系统层面优化
webapps 下不需要的示例与无用应用;在应用的 WEB-INF/web.xml 中将 metadata-complete="true" 可减少注解/组件扫描时间。sudo journalctl --vacuum-size=100M。net.core.somaxconn、net.ipv4.tcp_max_syn_backlog),并提升文件描述符限制(ulimit -n 或在 /etc/security/limits.conf 中设置)。五 一键检查与回滚建议
-Djava.security.egd=file:/dev/./urandom;执行 ps -ef | grep tomcat 应能看到该JVM参数。JAVA_OPTS 中的 -Djava.security.egd 或将 java.security 恢复为 file:/dev/random;sudo systemctl disable --now rng-tools;server.xml 与 catalina.sh 的原始配置。