

Tomcat 是一个广泛使用的 Web 服务器和应用程序容器,为了提高其性能,可以采取一些措施进行调优

增加 Tomcat 的内存分配:可以通过调整 Tomcat 的启动脚本来增加其分配的内存,比如在 catalina.sh 或 catalina.bat 中设置环境变量 CATALINA_OPTS 为 -Xms512m -Xmx1024m,其中 -Xms 表示 Tomcat 启动时分配的最小内存, -Xmx 表示 Tomcat 允许使用的最大内存。
- -Xms:指定Tomcat启动时的初始堆内存大小。
- -Xmx:指定Tomcat允许的最大堆内存大小。
- -XX:PermSize:指定永久代的初始大小。
- -XX:MaxPermSize:指定永久代的最大大小。
- -XX:MaxMetaspaceSize:指定元数据空间的最大大小(适用于 Java 8+)。
这些参数可以在 Tomcat 的启动脚本(如 catalina.sh 或 catalina.bat)中的JAVA_OPTS环境变量中进行配置。

调整 Tomcat 的线程池设置:Tomcat 默认使用的线程池是 org.apache.tomcat.util.threads.ThreadPoolExecutor,可以通过修改 server.xml 中的 Connector 节点下的 maxThreads、minSpareThreads 和 acceptCount 参数来调整线程池的大小和性能。
- maxThreads:设置 Tomcat 连接器的最大并发线程数。
- minSpareThreads:设置 Tomcat 连接器保持的最小空闲线程数。
- acceptCount:设置等待队列的最大长度,当所有线程池线程都被使用时,超过此长度的请求将被拒绝。
bash
[root@localhost ~]#vim /usr/local/tomcat/conf/server.xml
<Executor
name="tomcatThreadPool"
#执行器(线程池)定义的名字
namePrefix="catalina-exec-"
#指定线程池中每一个线程name前缀
maxThreads="150"
#线程池中最大的线程数量,假设请求的数量超过了 750,这将不是意味着将 maxThreads 属性值设置为 750,它的最好解决方案是使用「Tomcat集群」。也就是说,如果有 1000 请求,两个 Tomcat 实例设置 maxThreads = 500,而不在单 Tomcat 实例的情况下设置maxThreads=1000。
minSpareThreads="4"/>
#线程池中允许空闲的线程数量(多余的线程都杀死);
maxIdleTime="60000"
#一个线程空间多久算是一个空闲线程

这些参数可以在Tomcat的配置文件(如 server.xml)中的元素中进行配置。

优化 Tomcat 的缓存设置:可以通过调整 server.xml 中的 Connector 节点下的 enableLookups、maxKeepAliveRequests 和 keepAliveTimeout 等参数来优化 Tomcat 的缓存设置,减少网络连接的开销。

启用压缩:可以在 server.xml 中的 Connector 节点下启用压缩来减少网络传输的数据量,提高网站的响应速度,比如设置 compression 参数为 on、compressionMinSize 参数为 2048 等。
- compression:启用或禁用Tomcat的HTTP响应压缩。
- compressionMinSize:指定要进行压缩的响应的最小大小。
- compressableMimeType:指定要压缩的 MIME 类型。
启用静态资源缓存:可以通过在 web.xml 中配置 filter,启用静态资源缓存,减少服务器的负载,提高访问速度。
- useHttpOnly:设置是否启用HTTP缓存头部。
- cacheMaxSize:设置Tomcat静态资源缓存的最大大小。
- cacheObjectMaxSize:设置单个缓存对象的最大大小。
这些参数可以在Tomcat的配置文件中的 元素中进行配置。
使用 CDN 加速静态资源:可以使用 CDN(内容分发网络)来加速静态资源的传输,减少服务器的负载,提高网站的访问速度。
避免使用过多的 Session:可以在编写 Web 应用程序时避免过多地使用 Session,因为 Session 会占用服务器的内存资源,从而影响 Tomcat 的性能。


避免过多的 JDBC 操作:可以在编写 Web JDBC 操作数据库,因为数据库的访问是非常耗时的,从而影响 Tomcat 的性能。
- enableLookups:禁用DNS反向查找。
- allowTrace:禁用HTTP TRACE方法。
- allowMethods:指定允许的HTTP方法列表。
这些参数可以在Tomcat的配置文件中的 元素中进行配置。



配置数据库连接池
- 使用高性能的数据库连接池,如Apache Commons DBCP、HikariCP等,可以提高数据库连接的性能和管理。

以上仅是一些常见的调优参数和技巧,实际调优还应根据应用程序的需求和硬件环境进行调整。在进行任何调优之前,建议先进行性能测试和基准测试,以确定调整的效果和影响。