Tomcat调优【精简版】

Tomcat调优

优化Tomcat内存分配

调整Tomcat启动脚本contalina.sh,设置tomcat启动时分配的内存很可使用的最大内存;

CATALINA_OPTS

调整Tomcat线程池

Tomcat默认使用的线程池:ThreadPoolExecutor

可以通过修改server.xml的 Connector 节点下的 maxThreads、minSpareThreads 和 acceptCount 参数来调整线程池的大小和性能。

情况举例:

情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。

情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。

情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused

maxThreads如何配置

1,计算型的任务多的话,减少线程数

2,io较多的,增加线程数

优化tomcat缓存

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

配置文件模板:

配置tomcat内存:

catalina.sh

复制代码
#Make the umask available when using the org.apache.catalina.security.SecurityListener
 JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"

配置线程数,压缩,缓存

server.xml

复制代码
  <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                redirectPort="8443"
                maxThreads="100"//处理任务的最大线程数
                minSpareThreads="8"//最小空闲线程
                acceptCount="80"//当最大线程数到了之后接受的请求进入队列的数量,超出这个数会被拒绝处理
                enableLookups="false"//关闭DNS查找(关闭DNS缓存)
                maxKeepAliveRequests="100"//长连接的请求数
                keepAliveTimeout="1000"//长连接的在线时长
                compression="on"//启用压缩
                compressionMinSize="2048"//压缩的大小
                   maxParameterCount="1000"
                   />

compressionMinSize="2048"启用压缩的输出内容大小,默认为2KB

●noCompressionUserAgents="gozilla,traviata" 对于以下的浏览器,不启用压缩 ●compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩

可以配置一个线程池

引用线程池

复制代码
   <Connector port="8080" protocol="HTTP/1.1"
                executor="tomcatThreadPool"
                connectionTimeout="20000"
                redirectPort="8443"
                enableLookups="false"
                maxKeepAliveRequests="100"
                keepAliveTimeout="1000"
                compression="on"
                compressionMinSize="2048"
                   maxParameterCount="1000"
                   />

这样设置注意不要有重复的配置项

相关推荐
考虑考虑3 小时前
JDK26中的Map.ofLazy
java·后端·java ee
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天6 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 06 章 内置 Advisor 全景:13 个实现逐个剖到源码级
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 03 章 消息体系与 Prompt:不可变模型、`ChatOptions` 与模板渲染
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 24 章 生产实践与 2.x 迁移:陷阱清单、AOT 与调优
java·人工智能·开源
鶴哥只手遮天7 小时前
Spring AI 2.0.1 深度解析-第 10 章 工具调用(中):执行链路、结果转换与工具限制
java·人工智能·开源