在CentOS环境中优化Tomcat性能,可从系统、Tomcat配置和JVM参数三方面入手,具体如下:
调整文件描述符限制
编辑/etc/security/limits.conf
,增加以下内容:
* soft nofile 65536
* hard nofile 65536
避免Tomcat因文件描述符不足导致并发受限。
优化内核参数
编辑/etc/sysctl.conf
,添加以下参数:
net.core.somaxconn=65535
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
fs.file-max=65536
提升网络连接和文件处理效率。
禁用透明大页
编辑/etc/rc.local
,添加命令:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
避免内存碎片影响性能。
线程池调优
在conf/server.xml
中配置<Executor>
或<Connector>
参数:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="500"
minSpareThreads="50"
acceptCount="200"
connectionTimeout="20000"
enableLookups="false"
compression="on"
URIEncoding="UTF-8" />
maxThreads
:根据CPU核心数设置为2-4倍(如4核可设800),处理高并发请求。minSpareThreads
:保持最小空闲线程数(如50),减少线程创建开销。acceptCount
:设置等待队列长度(如200),避免请求被过早拒绝。compression
压缩响应数据,减少网络传输量。禁用不必要的协议
若无需AJP协议,注释或删除<Connector>
中protocol="AJP/1.3"
的配置,减少资源占用。
静态资源缓存
在web.xml
中配置静态资源缓存策略,减少重复加载:
<servlet>
<servlet-name>default</servlet-name>
<init-param>
<param-name>cacheMaxSize</param-name>
<param-value>10240</param-value> <!-- 10MB缓存 -->
</init-param>
</servlet>
内存配置
在bin/catalina.sh
中设置JAVA_OPTS
:
export JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=512m -XX:+UseG1GC"
-Xms
和-Xmx
:设置初始堆和最大堆大小(建议为物理内存的80%),避免频繁GC。-XX:+UseG1GC
),适合大内存和高并发场景。GC日志与调优
添加GC日志参数,便于分析内存回收情况:
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/tomcat-gc.log
conf/tomcat-users.xml
中注释或删除相关用户配置,减少资源占用。Http11NioProtocol
协议,提升I/O性能。jconsole
、VisualVM
或Prometheus+Grafana
监控Tomcat性能,根据监控数据调整参数。注意:调优需结合实际业务负载逐步测试,避免参数设置过大导致资源浪费或系统不稳定。