Ubuntu Tomcat稳定性提升策略
一 运行环境与资源治理
* soft nofile 65535、* hard nofile 65535,并在 systemd 服务单元中设置 LimitNOFILE=65535,防止“Too many open files”。net.core.somaxconn=4096、net.ipv4.tcp_max_syn_backlog=4096、net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=60,提升高并发下的连接处理能力并降低握手与回收时延。securerandom.source 调整为 /dev/./urandom,缓解应用启动或首次请求因熵不足导致的长时间阻塞。二 JVM与连接器调优
-XX:+UseG1GC),并开启 GC日志 与时间戳用于长期观测与容量规划:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/tomcat/logs/gc.log。enableLookups=false);启用GZIP压缩减少传输体积;设置合理 connectionTimeout 与 maxKeepAliveRequests 以平衡连接复用与资源占用。三 日志治理与可观测性
org.apache.juli.AsyncFileHandler)降低线程阻塞。catalina.out 与各类日志(按日/按大小轮转、压缩、保留策略),并在轮转后通知 Tomcat 重新打开日志句柄(如 kill -USR1 或 systemd 的 reload)。四 应用与架构层面稳定性
五 快速检查清单与示例配置
/etc/sysctl.conf 网络参数已加载。enableLookups=false、启用 GZIP、合理 connectionTimeout。<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="200" minSpareThreads="25" acceptCount="100"
maxKeepAliveRequests="100"
enableLookups="false"
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/plain,application/json" />
handlers = 1catalina.org.apache.juli.AsyncFileHandler, \
2localhost.org.apache.juli.AsyncFileHandler, \
java.util.logging.ConsoleHandler
.level = INFO
org.apache.catalina.level = WARNING
java.util.logging.ConsoleHandler.level = WARNING
export JAVA_OPTS=" \
-server \
-Xms2g -Xmx2g \
-XX:+UseG1GC \
-XX:MaxMetaspaceSize=512m \
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/opt/tomcat/logs/gc.log"
/opt/tomcat/logs/catalina.out {
daily
rotate 7
compress
missingok
notifempty
create 640 tomcat tomcat
postrotate
/bin/kill -USR1 $(cat /opt/tomcat/temp/tomcat.pid 2>/dev/null) 2>/dev/null || true
endscript
}