调整文件描述符限制
编辑 /etc/security/limits.conf
,添加以下内容:
* soft nofile 65536
* hard nofile 65536
提高并发连接数上限。
优化内核参数
编辑 /etc/sysctl.conf
,添加:
net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
提升网络连接复用和吞吐量。
禁用透明大页
编辑 /etc/rc.local
,添加:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
避免内存碎片影响性能。
线程池调优
修改 conf/server.xml
中的 Connector
配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="200" minSpareThreads="50" acceptCount="100" connectionTimeout="20000" compression="on" />
maxThreads
:最大处理线程数,根据服务器性能调整(建议200-500)。minSpareThreads
:最小空闲线程数,保持快速响应(建议50-100)。acceptCount
:等待队列长度,避免请求被过早拒绝(建议100-200)。compression
减少数据传输量。JVM内存优化
编辑 bin/catalina.sh
,设置:
export JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
-Xms
和 -Xmx
:设置初始堆和最大堆内存(建议为服务器内存的80%)。-XX:+UseG1GC
:使用G1垃圾回收器,适合大内存场景。禁用不必要的功能
conf/tomcat-users.xml
,删除非必要的用户角色。conf/server.xml
中的AJP相关配置,减少资源占用。使用监控工具
conf/logging.properties
,减少冗余日志输出。压力测试
使用JMeter模拟高并发场景,验证优化效果,针对性调整参数。
Cache-Control
缓存静态文件。参考来源:[1,2,3,4,5,6,7,8,9,10]