Tomcat优化(一)-线程池优化

2023-10-27

tomcat处理请求的过程:在accept队列中接收连接(当客户端向服务器发送请求时,如果客户端与OS完成三次握手建立了连接,则OS将该连接放入accept队列);在连接中获取请求的数据,生成request;调用servlet容器处理请求;返回response

相对应的,Connector中的几个参数功能如下:

1、acceptCount

accept队列的长度;当accept队列中连接的个数达到acceptCount时,队列满,进来的请求一律被拒绝。默认值是100。

2、maxConnections

Tomcat在任意时刻接收和处理的最大连接数。当Tomcat接收的连接数达到maxConnections时,Acceptor线程不会读取accept队列中的连接;这时accept队列中的线程会一直阻塞着,直到Tomcat接收的连接数小于maxConnections。如果设置为-1,则连接数不受限制。

默认值与连接器使用的协议有关:NIO的默认值是10000,APR/native的默认值是8192,而BIO的默认值为maxThreads(如果配置了Executor,则默认值是Executor的maxThreads)。

在windows下,APR/native的maxConnections值会自动调整为设置值以下最大的1024的整数倍;如设置为2000,则最大值实际是1024。

对CPU要求更高时,建议不要配置过于大(很少见)
对IO要求更高(对CPU要求不是特别高),可适当升高。

3、maxThreads

请求处理线程的最大数量。默认值是200(Tomcat7和8都是的)。如果该Connector绑定了Executor,这个值会被忽略,因为该Connector将使用绑定的Executor,而不是内置的线程池来执行任务。

maxThreads规定的是最大的线程数目,并不是实际running的CPU数量;实际上,maxThreads的大小比CPU核心数量要大得多。这是因为,处理请求的线程真正用于计算的时间可能很少,大多数时间可能在阻塞,如等待数据库返回数据、等待硬盘读写数据等。因此,在某一时刻,只有少数的线程真正的在使用物理CPU,大多数线程都在等待;因此线程数远大于物理核心数才是合理的

换句话说,Tomcat通过使用比CPU核心数量多得多的线程数,可以使CPU忙碌起来,大大提高CPU的利用率。

转载于:https://www.cnblogs.com/lbwniubi/articles/9520061.html

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

Tomcat优化(一)-线程池优化 的相关文章

  • cucumber.json 报告被重新运行场景报告覆盖

    我有一个具有相同技术堆栈 JAVA1 8 Cucumber JVM JUnit Maven 的 UI 测试项目和一个 API 测试项目 这两个项目都向我展示了这个问题 可能是因为两者都存在相同的依赖关系集 我使用了使用 maven sure
  • Spring Kafka - 为任何主题的分区消耗最后 N 条消息

    我正在尝试读取请求的卡夫卡消息数 对于非事务性消息 我们将从 endoffset N 对于 M 个分区 开始轮询并收集当前偏移量小于每个分区的结束偏移量的消息 对于幂等 事务消息 我们必须考虑事务标记 重复消息 这意味着偏移量将不连续 在这
  • Logback线程池

    我使用 Logback 进行日志记录 我有一个问题 我将 AsyncAppender 与 ConsoleAppender 结合使用 当应用程序启动时 它会创建具有 logback 线程名称的线程池 所有日志记录工作均由 AsyncAppen
  • Eclipse JAVA工具jar不存在

    The archive C Java jdk1 6 0 26 32 lib tools jar which is referenced by the classpath does not exist 这是我运行Tomcat时遇到的错误 清理
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • JConsole主类

    我正在尝试使用其 Main 类从命令行启动 JConsole 我提取了 jconsole jar 的内容 在 MANIFEST MF 中我可以看到 Main Class sun tools jconsole JConsole 所以我尝试运行
  • 是否可以将 BitmapDescriptor 转换为 Bitmap?

    我需要将 BitmapDescriptor 转换为 Bitmap 我可以使用以下代码将位图转换为 BitmapDescriptor BitmapDescriptor bd BitmapDescriptorFactory fromBitmap
  • 如何使用 Selenium WebDriver 和 Java 滚动特定的 DIV?

    WebDriver 无法识别某些 WebElement WebDriver 无法找到浏览器可见区域中不可见的元素 In order to make the WebElement viewable by WebDriver We need t
  • 如何在Netbeans中自定义jTable标题列字体大小?

    我尝试改变jtable标题字体大小Netbeans 但还不能 无论如何 表行字体大小已成功更改 这是我使用的方法 更改后的输出 问题 标题字体大小未更改 但我也想改变这一点 所以请帮助我该怎么做 一种方法是使用UIManager并替换默认的
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • 为什么在java中加载JNI是在静态初始化程序中完成的?

    在许多使用 JNI 的示例中 我看到类似以下内容 class SampleClass static System loadLibrary somelib 这种特殊语法的目的是什么 为什么使用这个 而不仅仅是在类构造函数或类似的东西中 我想你
  • Java JDT 解析器。获取VariableDeclarationFragment的变量类型

    我一直在用 JDT 实现 Java 解析器 但我不知道当变量的节点类型为变量声明片段 我只有在涉及到时才发现如何获取变量类型变量声明 我的代码如下 public boolean visit VariableDeclarationFragme
  • 用于计算句子中单词数的正则表达式

    public static int getWordCount String sentence return sentence split a zA Z0 9 a zA Z0 9 1 length sentence replaceAll a
  • 如何指示 yum 安装特定版本的 OpenJDK

    我尝试安装openjdk in the redhat服务器 如何安装指定版本 我要安装的版本是 11 0 4 使用以下命令安装的版本是11 0 6 yum install java 11 openjdk devel 曾与 yum showd
  • Tomcat 与 Weblogic JNDI 查找

    我们使用的 Weblogic 服务器已配置为允许 JNDI 数据源名称 例如 appds 对于开发 本地主机 我们可能会运行 Tomcat 并且在 server xml 的 部分中声明时 Tomcat 会将 JNDI 数据源挂在 JNDI
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • CompletableFuture 的多个 thenAccept 块的执行顺序是什么

    所以我有一个返回a的方法CompletableFuture 在返回之前 此方法添加一个块thenAccept这是在之后执行的CompletableFuture完成 此方法的调用者还添加了另一个块thenAccept 显然 这可以通过多个链式
  • 所有语言中特殊字符的 Java 正则表达式

    在我的用户输入字段中 我想允许某些特殊字符 字母和数字的组合 我应该确保正则表达式模式在输入时允许此设置任何语言 基本上我构建的这个正则表达式也应该支持 unicode 表示 如何使用 Java 中的 Pattern 类来实现这一点 这里给
  • Java 中的下载管理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要通过 FTP HTTP 从 Java 获取几个大文件 几个演出 有现成的库 java 命令行工具

随机推荐

  • JS使用IntersectionObserver进行图片懒加载

    JS图片懒加载 使用IntersectionObserver来进行图片懒加载 可能有兼容性问题 用isIntersecting属性判断是否加载图片 代码如下 下面展示一些 内联代码片
  • HTML统计用户浏览页面时间,js记录用户在网站的浏览记录和停留时间(2)

    问题 上次的代码确实解决了一部分用户访问记录的收集 但是还是存在一个问题就是 我们网站的注册 都是新页面打开的 如果用户刚进入网站就点击注册 打开了新的页面 我代码里用到的 onbeforeunload 就无法将用户进入的页面存储到本地了
  • GitKraken第一次使用创建仓库,出现提示克隆失败会话认证失败,无法打开公钥文件

    原因分析 自己添加了ssh密钥 在创建仓库时 会有一个show detail ssh setting 如果你和我一样点开了 并把这个密钥加到了GitHub 并且收到了邮件 恭喜你 犯了和我一样的错 解决方案 解决很简单 remove 移除那
  • 【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘「内网穿透」

    文章目录 前言 1 群晖Synology Drive套件的安装 1 1 安装Synology Drive套件 1 2 设置Synology Drive套件 1 3 局域网内电脑测试和使用 2 使用cpolar远程访问内网Synology D
  • 微信小程序WebSocket使用案例

    一 Asp Net Core 6服务器端代码 服务器端WebScoket代码同上一篇博文 Asp Net Core6 WebSocket 简单案例 天马3798的博客 CSDN博客 二 微信小程序端WebSocket使用整理 1 wx co
  • day34 贪心

    1005 K次取反后最大化的数组和 按照一定的策略 先绝对值排序 再负数修正 最后对绝对值最小的数进行替换 再求和 134 加油站 判断是否可以从i 到达i 1 判断gas总量是否大于cost 135 分发糖果 采用两次遍历计算糖果数 pa
  • KEIL3新建TA89C51工程

    1 新建一个文件夹命名为TEST 如图所示 2 在TEST文件夹里面新建一个LED的空文件夹 如图所示 3 打开keil3依次点击Project New uVision Project 如图所示 4 找到最开始新建的文件夹TEST 并打开里
  • 学计算机编程配置需求,编程对电脑配置要求高吗?

    算法是编程的灵魂 是程序的核心组成 系统对程序算法的编译就是程序生成的过程 大型的应用程序如我们日常用的OFFICE办公工具 大家爱玩的吃鸡游戏等 其算法复杂 没有几年的苦心研发 编写代码 优化算法结构是看不出来了 由于这类程序的复杂性与庞
  • 二叉树知识点概

    树 一 树读常考性质 节点数 总度数 1 即除了根节点 每个节点都有一个入度 前驱 度为m的树和m叉树 度为m的树第i层至多有 m i 1
  • vscode中嵌入cppcheck进行静态检查,包含插件使用方法

    1 vscode下载插件cpp check lint 如图 下载好之后按ctrl shift p打开用户设置 user setting 在设置中追加加入以下代码 cppcheck配置 cpp check lint enable true 启
  • 贵州酒店集团过405拦截

    文章目录 一 为什么返回405 二 开发者怎么解除限制 一 为什么返回405 云盾是阿里巴巴集团多年来安全技术研究积累的成果 结合阿里云云计算平台强大的数据分析能力 为中小网站提供如安全漏洞检测 网页木马检测以及面向云服务器用户提供的主机入
  • QT多平台移植经验分享及问题解析

    Qt5与Qt4对比 没有Qt4用到的qws Qt5新增了QPA系统 基于QPA使得Qt5移植到一个新平台非常简单而又具有极强的底层扩展能力 同时 C 11 也获得全面支持 使用 C 11 新特性更为方便 下面讲述将Qt5 4 1移植到目标板
  • QQ红包金额分配算法

    最近对红包金额分配感兴趣 便整理了一个较简单的分配算法 思路 主要是通过随机函数对金额随机分配 由于金额与份数不断变化 如何保证分配前等概率呢 本例是将金额等分 取得均值 但第一份取左和取右等概率 故其最大值为右份边界 代码 include
  • linux copy_from_user 头文件,宋宝华: Linux为什么一定要copy_from_user ?

    网上很多人提问为什么一定要copy from user 也有人解答 比如百度一下 但是这里面很多的解答没有回答到点子上 不能真正回答这个问题 我决定写篇文章正式回答一下这个问题 消除读者的各种疑虑 这个问题 我认为需要从2个层面回答 第一个
  • MySQL5.7忘记root密码-最简单的修改密码方法

    我的上一篇博客 MySQL5 7忘记root密码 手动修改密码教程 讲的还算详细 对于Windows10 DOS命令下的修改MySQL数据库密码可能出现的一些问题都做了讲解 相比上一篇 这一片会简单化描述 1 停止MySQL服务 去任务管理
  • 性能测试LoadRunner深入浅出

    Da01 一 初步概念 1 功能测试 测试软件产品的功能是否达到要求 如 ATM取款 在线取款 是否成功 转账成功 表示功能实现了 一个人 2 性能测试 测试软件产品的性能是否达到要求 包括 时间性能 多用户共同使用时的性能 如 ATM取款
  • 作业:递归实现插入排序和在o(nlgn)时间复杂度内寻找和为定值的两个元素

    1 递归实现插入排序 基本思想 可以把插入排序看作递归 地排序A 1 n 1 然后插入a n 到已经排好序的序列a 1 n 1 中 一下是实现算法 C 描述 VS205中调试通过 class InsertSort static void M
  • 智能合约编写之Solidity的高级特性

    前言 FISCO BCOS使用了Solidity语言进行智能合约开发 Solidity是一门面向区块链平台设计 图灵完备的编程语言 支持函数调用 修饰器 重载 事件 继承和库等多种高级语言的特性 在本系列前两篇文章中 介绍了智能合约的概念与
  • console.log机制

    介绍 前端在调试的时候很多都使用了console log 但大家都知道他的机制吗 遇到问题 在想要获取一个对象的某一个属性的属性值的时候 因为发送了ajax请求 然后在mounted阶段打印对象的属性时为空 而打印对象显示要获取的属性有值
  • Tomcat优化(一)-线程池优化

    tomcat处理请求的过程 在accept队列中接收连接 当客户端向服务器发送请求时 如果客户端与OS完成三次握手建立了连接 则OS将该连接放入accept队列 在连接中获取请求的数据 生成request 调用servlet容器处理请求 返