浅谈 Tomcat 调优
动静分离
程序中静态资源的访问无疑会消耗 Tomcat 的性能,一般采用 Nginx + Tomcat 实现动静分离。用 Nginx 作静态资源服务器。
配置 Tomcat 线程池
Tomcat 默认不使用线程池模式,可以通过配置线程池优化其性能。打开 server.xml 文件,配置如下:
< Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> < Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4" maxIdleTime="60000"/>
Executor 配置参数说明如下:
- name:线程池名称
- namePrefix:线程池中每个线程名称的前缀
- maxThreads:最大线程数。比如请求数超过 150 时,可以调大线程数,或者采用 Tomcat 集群
- minSpareThreads:线程池中允许空闲的线程数
- maxIdleTime:空闲线程存活时间
优化连接器 Connector
< Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" enableLookups="false" maxThreads="3000" minSpareThreads="20" acceptCount="1000" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />
Connector 配置参数说明如下:
- executor:指定配置的线程池
- port:连接端口
- protocol:协议类型
- enableLookups:关闭 DNS 解析,减少性能损耗
- maxThreads:最大连接线程数
- minSpareThreads:最小允许空闲线程数
- acceptCount:线程等待队列大小
- connectTimeout:超时时间,单位毫秒
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步