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"
                   />

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

相关推荐
白狐_7981 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2581 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
码匠许师傅1 小时前
【C++ 面试真题】聊聊 C++ 的拷贝构造与拷贝赋值
java·c++·面试
极创信息3 小时前
系统安全隐患全方位排查方案:标准化渗透测试全流程
java·opencv·struts·数据挖掘·eclipse·语音识别·hibernate
汉字萌萌哒4 小时前
2019CCF-CSP入门级C++试题解析
java·开发语言·c++
喜欢的名字被抢了4 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
数据知道5 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
2601_949950635 小时前
Java 面试准备,用练题簿把“背过八股”变成“真正会答”
java·开发语言·面试·刷题·小程序推荐
Rain的Java大神之路5 小时前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
無限進步D5 小时前
Java 函数式编程(Lambda)
java·开发语言