Tomcat调优【精简版】

2023-09-20 10:20:58

在这里插入图片描述

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

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

更多推荐

解锁汽车自动驾驶的密码:L0到L5六个等级全解析

引言随着智能网联汽车技术的快速发展,自动驾驶已成为汽车产业发展的重要方向。根据国际公认的标准,汽车自动驾驶可分为六个等级:L0级到L5级,等级越高意味着自动化程度越高。那么这六个等级具体有何区别呢?本文将详细介绍汽车自动驾驶的六个等级标准。自动驾驶的6个等级(L0-L5)L0级是完全的手动驾驶,驾驶员要完成汽车的全部操

【深度学习】ONNX模型多线程快速部署【基础】

【深度学习】ONNX模型CPU多线程快速部署【基础】提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【深度学习】ONNX模型CPU多线程快速部署【基础】前言搭建打包环境python多线程并发简单教程基本教程ONNX模型多线程并发打包成可执行文件总结前言之前的内容已经尽可能简单、详细的介绍CP

智安新闻|智安网络亮相2023网安周!

一年一度的国家网络安全“顶级盛事”——2023年国家网络安全宣传周9月拉开帷幕,本次展览会以“网络安全为人民,网络安全靠人民”为主题,旨在通过展览及现场互动广泛宣传网络安全知识与技能,提升全民网络安全意识,共同构建网络安全重要的社会氛围。作为网络安全领域的专家,智安网络通过各种形式的互动和分享,与全体参与者共同探讨网络

Cento7 Docker安装Zabbix,定制自定义模板

1.先安装docker环境yum-yinstallyum-utilsdevice-mapper-persistent-datalvm2#导入docker安装库yum-config-manager\--add-repo\https://download.docker.com/linux/centos/docker-ce.

华为HCIA(五)

Vlanid在802.1Q中高级ACL不能匹配用户名和源MAC2.4G频段被分为14个交叠的,错列的20MHz信道,信道编码从1到14,邻近的信道之间存在一定的重叠范围STA通过Probe获取SSID信息Snmp报文网络管理设备异常发生时会发送trap报文D类地址是组播地址,不能作为主机的IPv4地址路由表中没有MAC

MySQL性能优化——MYSQL执行流程

MySQL执行流程1-5如下图。MySQL的架构共分为两层:Server层和存储引擎层,Server层负责建立连接、分析和执行SQL。MySQL大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、预处理器、优化器、执行器等。另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存

移动端适配以及多屏幕自适应方案

文章目录前言一、移动端适配问题二、meta-viewport标记三、rem字体适配四、vw和vh五、postcss转换插件总结前言本文主要记录适配移动端以及多屏幕的解决办法,还有postcss转换插件的编写。一、移动端适配问题在MDN中提到:在移动设备和其他窄屏设备中,某些内容在比普通屏幕更宽的虚拟窗口或视口中渲染页面

PC微信3.9.7内测版,更新功能一览(附下载)

之前小编发布了PC微信3.9.7的内测版本,不过大家没有内测权限,不能够安装体验,本次正式版终于来了,大家可以下载安装体验,和之前一样小编给大家介绍本次PC版微信更新的内容,感兴趣的朋友可以下载体验一下!1、聊天界面表情弹窗新增搜索表情功能大家比较期待的表情搜索功能终于上线了,大家以后聊天终于可以使用更加丰富的表情包了

C语言零基础教程(memset,memcpy函数,memmove函数)

文章目录前言一、memset函数二、memcpy函数三、memmove函数总结前言本篇文章来讲解一下memset和memcpy函数,这两个函数在C语言中也是比较重要的,这里我们就来学习一下这两个函数的使用方法吧。一、memset函数memset函数是一个C标准库中的函数,用于将一块内存区域的每个字节设置为指定的值。me

双向链表的实现(增删查改)——最好理解的链表

双向链表的实现一,双向链表的特点二,双向链表的结构三,双向链表的内容实现3.1创建node节点3.2初始化3.3打印3.4插入3.4.1尾插3.4.2头插3.4.3在pos位置上插入3.5删除3.5.1尾删3.5.2头删3.5.3删除pos位置上的数据四,调试技巧(具体示例)五,总结一,双向链表的特点这里的双向链表就是

Python语言学习实战-内置函数reduce()的使用(附源码和实现效果)

实现功能reduce()是一个内置函数,它用于对一个可迭代对象中的元素进行累积操作。它接受一个函数和一个可迭代对象作为参数,并返回一个单个的累积结果。reduce()函数的语法如下:reduce(function,iterable[,initializer])其中,function是一个二元函数,它接受两个参数并返回一

热文推荐