一、操作系统层面优化
/etc/sysctl.conf文件,优化网络性能。关键参数包括:net.core.somaxconn 65535(增大TCP连接队列长度,避免连接被拒绝)、net.ipv4.tcp_tw_reuse 1(允许TCP连接复用,减少TIME_WAIT状态连接)、net.ipv4.tcp_tw_recycle 1(快速回收TIME_WAIT连接,提升高并发下的连接处理能力)、fs.file-max 65536(增加系统最大文件描述符数,支持更多并发连接)。修改后执行sysctl -p使配置生效。/etc/security/limits.conf文件,添加* soft nofile 65536和* hard nofile 65536,提高每个用户的文件描述符限制,避免Tomcat因文件描述符不足而无法处理更多并发请求。/etc/rc.local文件,添加echo never > /sys/kernel/mm/transparent_hugepage/enabled和echo never > /sys/kernel/mm/transparent_hugepage/defrag,在系统启动时禁用透明大页。二、Tomcat配置优化
server.xml文件优化线程池参数,提升并发处理能力。推荐使用Executor元素定义自定义线程池(Tomcat 8.5及以上版本支持),示例配置:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="50" maxIdleTime="60000"/>
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" acceptCount="1000"/>
参数说明:maxThreads(最大线程数,建议为CPU核心数的2-4倍)、minSpareThreads(最小空闲线程数,保持线程池预热)、maxIdleTime(线程空闲超时时间,释放闲置线程)、acceptCount(最大排队请求数,设置为maxThreads的1.5-2倍,避免拒绝连接)。protocol="org.apache.coyote.http11.Http11NioProtocol"或Http11Nio2Protocol),相比BIO协议,NIO能显著提升网络I/O性能。启用压缩功能(compression="on"),减少网络传输数据量(适用于文本类响应,如HTML、JSON);开启HTTP/2协议(protocol="org.apache.coyote.http2.Http2Protocol"),支持多路复用、头部压缩,进一步提升页面加载速度。-Xms(初始堆大小,建议与-Xmx一致,避免堆内存动态调整带来的性能损耗)、-Xmx(最大堆大小,根据服务器内存大小设置,如4GB内存可设置为-Xms4G -Xmx4G)、-XX:MetaspaceSize(元空间初始大小,Java 8及以上版本替代永久代)、-XX:MaxMetaspaceSize(元空间最大大小)、垃圾回收器(推荐使用G1GC,适用于大内存应用,参数-XX:+UseG1GC)。示例配置(添加到catalina.sh文件的JAVA_OPTS变量中):export CATALINA_OPTS="-server -Xms4G -Xmx4G -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
注意:根据应用实际内存使用情况调整参数,避免过度分配内存。三、应用与监控优化
/manager、/host-manager应用)和不需要的组件(如AJP连接器),减少资源消耗;关闭war包自动部署功能(修改server.xml中的autoDeploy="false"),避免频繁扫描war包带来的性能开销。server.xml中的Server标签,设置server="Custom Server",隐藏Tomcat版本信息,减少安全风险(同时避免攻击者针对特定版本漏洞发起攻击)。