tomcat默认最大连接数及相关调整方法


Posted in Servers onMay 06, 2022

一般来说我们都是用tomcat默认的配置做基础的本地开发,测试及生产肯定不用tomcat啦,正式一点的企业肯定换大型容器了,当然不排除还是用tomcat或者它的集群的,言归正传,tomcat的连接数相关配置及修改干货如下:

在tomcat配置文件server.xml中的<Connector  />标签配置中,和连接数相关的参数有下面几个(如果你现在看肯定都没有的):

  • minProcessors------------------最小空闲连接线程数,用于提高系统处理性能,默认值为10
  • maxProcessors-----------------最大连接线程数,即:并发处理的最大请求数,默认值为75
  • acceptCount---------------------允许的最大连接数,应大于等于maxProcessors,默认值为100
  • enableLookups-----------------是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
  • connectionTimeout------------网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

P.S.如果你要手动增加这些链接相关参数,那么根据以上参数肯定是找不到的,官方文档提示需要搞另外两个参数才能加大并发连接数,那就是maxProcessors和acceptCount。

官方原话及翻译:

If more simultaneous requests are received than can be handled by the currently available request processing threads, additional threads will be created up to the configured maximum (the value of the maxThreads attribute).

如果接收到的并发请求比当前可用的请求处理线程所能处理的更多,则将创建额外的线程到配置的最大值(maxThreads 属性)。

If still more simultaneous requests are received, they are stacked up inside the server socket created by the Connector, up to the configured maximum (the value of the acceptCount attribute).

如果接收到更多的并发请求,则它们被堆叠在由连接器创建的服务器套接字内,直到配置的最大值(acceptCount 属性)。

所以需要设置的是maxThreads和acceptCount这两个值,两者的默认值分别是200和100,要调整Tomcat的默认最大连接数,可以增加这两个属性的值,并且使acceptCount大于等于maxThreads:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" acceptCount="300" maxThreads="200" />

并发请求数 <= tomcat最大线程数200,可以看到200个请求,响应结果正常
并发数(201) >tomcat最大线程数200.可以看到,因为tomcat最大的线程数为200,201的并发请求量,超出了并发处理的数量200,多出来的1个请求,需要等待某个处理中的请求处理完成
请求数超过最大连接数300,可以看到有大量的没有正常响应的http请求,原因很简单,因为超过了tomcat设置的最大连接数,服务器拒绝了该次请求的连接

增加线程是有成本的,JVM中默认情况下在创建新线程时会分配大小为1M的线程栈,所以更多的线程异味着更多的内存;
更多的线程会带来更多的线程上下文切换成本。

springboot中Tomcat配置建议:
最大工作线程数 ,默认200(4核8G内存,线程数经验值为800,操作系统之间做线程之间切换调度是有开销的,不是越多越好),最大连接数默认是10000,等待长度默认为100,最小工作空闲线程默认10

线程数的经验值为:1核2G内存, 线程数经验值为200,;4核8G内存,线程数经验值为800

到此这篇关于tomcat默认最大连接数及相关调整方法的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
Jun 21 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
nginx请求限制配置方法
Jul 09 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
解决xampp安装后Apache无法启动
Mar 21 Servers
在Windows Server 2012上安装 .NET Framework 3.5 所遇到的问题
Apr 29 Servers
linux目录管理方法介绍
Jun 01 Servers
永中文档在线转换预览基于nginx配置部署方案
Jun 10 Servers
windows server 2012安装FTP并配置被动模式指定开放端口
Jun 10 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
利用Apache Common将java对象池化的问题
Jun 16 Servers
windows系统搭建WEB服务器详细教程
Aug 05 Servers
如何Tomcat中使用ipv6地址
May 06 #Servers
Tomcat弱口令复现及利用
Vscode中SSH插件如何远程连接Linux
nginx配置限速限流基于内置模块
May 02 #Servers
Nginx配置之禁止指定IP访问
centos7安装mysql5.7经验记录
May 02 #Servers
使用 Docker Compose 构建复杂的多容器App
Apr 30 #Servers
You might like
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
二级域名转向类
2006/11/09 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
vue实现组件之间传值功能示例
2018/07/13 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python机器人行走步数问题的解决
2018/01/29 Python
python pandas修改列属性的方法详解
2018/06/09 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
电气自动化个人求职信范文
2014/02/03 职场文书
统计员岗位职责范本
2015/04/14 职场文书
初中班主任教育随笔
2015/08/15 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python