Tomcat调优【精简版】

2023-11-18

在这里插入图片描述

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tomcat调优【精简版】 的相关文章

  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • JavaMail Gmail 问题。 “准备启动 TLS”然后失败

    mailServerProperties System getProperties mailServerProperties put mail smtp port 587 mailServerProperties put mail smtp
  • 如何使用 FileChannel 将一个文件的内容附加到另一个文件的末尾?

    File a txt好像 ABC File d txt好像 DEF 我正在尝试将 DEF 附加到 ABC 所以a txt好像 ABC DEF 我尝试过的方法总是完全覆盖第一个条目 所以我总是最终得到 DEF 这是我尝试过的两种方法 File
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • 如何测试 JUnit 测试的 Comparator?

    我需要测试 Compare 方法 但我对如何测试感到困惑 我可以看看该怎么做吗 public class MemberComparator implements Comparator
  • Java8无符号算术

    据广泛报道 Java 8 具有对无符号整数的库支持 然而 似乎没有文章解释如何使用它以及有多少可能 有些函数 例如 Integer CompareUnsigned 很容易找到 并且似乎可以实现人们所期望的功能 但是 我什至无法编写一个简单的
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 使用 AWS Java SDK 为现有 S3 对象设置 Expires 标头

    我正在更新 Amazon S3 存储桶中的现有对象以设置一些元数据 我想设置 HTTPExpires每个对象的标头以更好地处理 HTTP 1 0 客户端 我们正在使用AWS Java SDK http aws amazon com sdkf
  • org.jdesktop.application 包不存在

    几天以来我一直在构建一个 Java 桌面应用程序 一切都很顺利 但是今天 当我打开Netbeans并编译文件时 出现以下编译错误 Compiling 9 source files to C Documents and Settings Ad
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • 当单元格内的 JComboBox 中有 ItemEvent 时,如何获取 CellRow

    我有一个 JTable 其中有一列包含 JComboBox 我有一个附加到 JComboBox 的 ItemListener 它会根据任何更改进行操作 但是 ItemListener 没有获取更改的 ComboBox 所在行的方法 当组合框
  • Windows 上的 Nifi 命令

    在我当前的项目中 我一直在Windows操作系统上使用apache nifi 我已经提取了nifi 0 7 0 bin zip文件输入C 现在 当我跑步时 bin run nifi bat as 管理员我在命令行上看到以下消息 但无法运行
  • 运行 Jar 文件时出现问题

    我已将 java 项目编译成 Jar 文件 但运行它时遇到问题 当我跑步时 java jar myJar jar 我收到以下错误 Could not find the main class myClass 类文件不在 jar 的根目录中 因
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • com.jcraft.jsch.JSchException:身份验证失败

    当我从本地磁盘上传文件到远程服务器时 出现这样的异常 com jcraft jsch JSchException Auth fail at org apache tools ant taskdefs optional ssh Scp exe
  • 中断连接套接字

    我有一个 GUI 其中包含要连接的服务器列表 如果用户单击服务器 则会连接到该服务器 如果用户单击第二个服务器 它将断开第一个服务器的连接并连接到第二个服务器 每个新连接都在一个新线程中运行 以便程序可以执行其他任务 但是 如果用户在第一个

随机推荐

  • 在单链表中删除指定值的节点

    在单链表中删除指定值的节点 题目 给定一个单链表和一个数val 删除链表中所有值为val的节点 例如 1 gt 2 gt 3 gt 4 删除3 结果为 1 gt 2 gt 4 思路1 用栈 def remove node with val1
  • Java中如何设置注释模板呢?

    转自 Java中如何设置注释模板呢 下文笔者讲述在日常开发IDE工具中设置注释模板的方法分享 如下所示 Eclipse中设置Java注释模板 Eclipse设置注释模板的菜单 Window gt Preference gt Java gt
  • 实时音频编解码之八 频带扩展

    本文谢绝任何形式转载 谢谢 1 4 8 频带扩展 在线性预测应用中 由于极点过于靠近单位圆 合成滤波器可能处于临界稳定的状态 在定点实现中这一问题更加严重 定点的量化和计算中的精度损失可能使得临界稳定的滤波器变得不稳定 极点位于单位圆外 这
  • maven 配置篇 之 settings.xml 整理中...

    maven 配置 settings xml maven2比起maven1 来说 需要配置的文件少多了 主要集中在pom xml和settings xml中 先来说说settings xml settings xml对于maven 来说相 当
  • 【JS】jsx/tsx是什么?为什么 Vue3 的组件库都在使用 jsx/tsx?如何在Vue3中使用 jsx/tsx?

    前几天得到一个疑问 为什么 React 要用 JSX 语法 这样显得代码好像 很耦合 按照传统应推荐 html js css 模版分离 这样设计的优越性到底在哪里 一 jsx是什么 JSX 即 javascript Xml的缩写 是Face
  • Springboot 封装ssh 服务

    前提条件 Linux 已经启动SSH 服务或Windows 启动SSH 服务 整体项目结构 第一步 BuleSky 的pom xml 文件
  • CMake——cmake_minimum_required

    命令简介 cmake minimum required用于设定cmake的最低版本 cmake minimum required VERSION
  • 入门强化学习(Q-learning→DQN→DDQN)

    基础 只要具备CNN分类算法的基本认识 讲解内容 内容主要通过 飞翔小鸟 游戏为例 探究如下2个问题 强化学习原理 以Q learning算法为例 深度强化学习原理 以DQN DDQN算法为例 然后大概讲下DDQN算法 如何在更复杂的解锁任
  • OLED透明屏厚度:引领未来显示技术的革命

    OLED透明屏作为一种未来显示技术 其薄度在整个行业中具有重要意义 在这篇文章中 尼伽将详细介绍OLED透明屏厚度的优势 技术挑战以及应用案例 旨在为读者全面了解OLED透明屏的发展前景 一 OLED透明屏厚度的优势 OLED透明屏采用柔性
  • springboot项目中对文件夹进行监控

    需要的依赖
  • Quartz 基本使用

    Quartz 基本使用 一 Quartz的核心概念 二 Quartz的几个常用API 三 Quartz的使用 四 Quartz核心详解 五 JobListener 六 TriggerListener 七 SchedulerListener
  • 更改:为硬件保留的内存

    电脑 联想thinkbook16P 系统 win11 内存 16G 更改前 2 3G 更改后 827MB 一 关机 不同的型号电脑进入boss模式的按键不同 我的是按F1 自己去找进入boss模式的方式 二 进入boss模式 进入boss模
  • ARM运行可执行文件出现/usr/lib/libstdc++.so.6: version `CXXABI_ARM_1.3.3' not found解决

    1 关于Linux PC上出现这种问题容易解决 直接下载个高版本的libstdc so 6 0 x复制到 usr lib中 软连接一下就好了 ln s libstdc so 6 0 x libstdc so 6 2 但是在ARM板上执行可执
  • 1 映射与函数

    文章目录 集合 集合表示法 区间与领域 两个逻辑量词 映射 函数 函数的图形 反函数 集合 集合表示法 区间与领域 两个逻辑量词 映射 函数 函数的图形 反函数
  • JavaScript一种将数据库记录建立层级关系的处理方法

    JavaScript一种将数据库记录建立层级关系的处理方法 背景 方案 提示 背景 项目开展中 有些数据往往具有层级关系 在数据中用ID Parent来标示 那么在前端如何有效的还原这种层级关系 而其是很多层级的情况 方便的将数据加载的树
  • c#处理3种json数据的实例介绍

    这篇文章主要介绍了c 处理包含数组 对象的复杂json数据的方法 需要的朋友可以参考下 网络中数据传输经常是xml或者json 现在做的一个项目之前调其他系统接口都是返回的xml格式 刚刚遇到一个返回json格式数据的接口 通过例子由易到难
  • Linux安装iptables 替换firewall

    1 查看当前防火墙状态 systemctl status firewalld service 2 关闭防火墙 并查看防火墙状态 systemctl stop firewalld service 停止firewall 3 禁止防火墙开机启动
  • Springboot项目在Jenkins+Docker中实现自动化部署

    Springboot项目在Jenkins Docker中实现自动化部署 一 环境准备 1 项目开发环境 2 Jenkins docker运行环境 二 Docker安装 三 Jenkins安装 四 创建一个Springboot项目 1 使用I
  • 太突然!北大方正破产了!负债3029亿元!

    点击上方 Python高校 关注 未未干货立马到手 来源 中国基金报 chinafundnews 记者 乔麦 体量超3000亿的中国最大校企方正集团 债务危机迎来新进展 日前 方正集团旗下6家上市公司齐发提示性公告表示 北京银行申请对方正集
  • Tomcat调优【精简版】

    Tomcat调优 优化Tomcat内存分配 调整Tomcat启动脚本contalina sh 设置tomcat启动时分配的内存很可使用的最大内存 CATALINA OPTS 调整Tomcat线程池 Tomcat默认使用的线程池 Thread