当前位置:

首页 > 编程开发 > springboot内置tomcat支持最大的并发量问题怎么解决

springboot内置tomcat支持最大的并发量问题怎么解决

springboot内置的tomcat支持最大的并发量SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,也就是说支持最大并发量是一万(默认)Tomcat有两种处理连接的模式1,是BIO,一个线程只处理一个Socket连接,2,是NIO,一个线程处理多个Socket连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。一个线程处理多个连接数会很慢有可能会超时默认内嵌Tomca

本文目录

      springboot内置的tomcat支持最大的并发量

      SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,也就是说 支持最大并发量是一万(默认)

      Tomcat有两种处理连接的模式

      1,是BIO,一个线程只处理一个Socket连接,

      2,是NIO,一个线程处理多个Socket连接。

      由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。一个线程处理多个连接数会很慢 有可能会超时

      默认内嵌Tomcat配置

      • server.tomcat.accept-count:等待队列长度,当可分配的线程数全部用完之后,后续的请求将进入等待队列等待,等待队列满后则拒绝处理,默认100。

      • server.tomcat.max-connections:最大可被连接数,默认10000

      • server.tomcat.max-threads:最大工作线程数,默认200,

      • server.tomcat.min-spare-threads:最小工作线程数,初始化分配线程数,默认10

      默认配置下,连接超过10000后会出现拒绝连接情况

      默认配置下,触发的请求超过200+100后拒绝处理(最大工作线程数+等待队列长度)

      如果默认配置无法满足当前需求 可以自己调优 可以手动修改配置来进行处理并发

      修改pro文件

      server.port=7001
      
      server.tomcat.accept-count=1000
      
      server.tomcat.max-connections=10000
      
      server.tomcat.max-threads=500
      
      server.tomcat.min-spare-threads=100

      然后 打包重启项目

      kill -9 9545   //杀死进程

      ps -ef | grep java   //查看项目启动的端口

      pstree -p 7968 | wc -l    //查看进程数

      我们也可以使用配置文件, 可以新增WebServerConfiguration.java文件

      import org.apache.catalina.connector.Connector;
      
      import org.apache.coyote.http11.Http11NioProtocol;
      
      import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
      
      import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
      
      import org.springframework.boot.web.server.ConfigurableWebServerFactory;
      
      import org.springframework.boot.web.server.WebServerFactoryCustomizer;
      
      import org.springframework.stereotype.Component;
      
      
      //当Spring容器内没有TomcatEmbeddedServletContainerFactory这个bean时,会吧此bean加载进spring容器中
      
      @Component
      
      public class WebServerConfiguration implements WebServerFactoryCustomizer {
      
          @Override
      
          public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {
      
                  //使用对应工厂类提供给我们的接口定制化我们的tomcat connector
      
              ((TomcatServletWebServerFactory)configurableWebServerFactory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
      
                  @Override
      
                  public void customize(Connector connector) {
      
                      Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
      
                      //定制化keepalivetimeout,设置30秒内没有请求则服务端自动断开keepalive链接
      
                      protocol.setKeepAliveTimeout(30000);
      
                      //当客户端发送超过10000个请求则自动断开keepalive链接
      
                      protocol.setMaxKeepAliveRequests(10000);
      
                  }
      
              });
      
          }
      
      }

      备注:

      MySQL 数据库 QPS 容量问题:

      • 主键查询: 千万级别数据 == 1-10 ms

      • 唯一索引查询: 千万级别数据 == 10-100 ms

      • 非唯一索引查询: 千万级别数据 == 100-1000ms

      • 无索引数据: 百万级别数据 == 1000ms+

      MySQL 数据库 TPS 容量问题:

      • 非插入的更新删除操作: 同查询

      • 插入操作: 1w~10w tps(依赖配置优化)

      提高tomcat并发量的几种方法

      1、Apache + Tomcat 结合起来用Apache负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。

      2、压力过大的问题,可以做负载均衡,一个TOMCAT无论如何也不可能担当如此多的线程负载,而且JVM过大,其内存管理成本将显著加大。2G的内存,做3-4个TOMCAT实例(512RAM*4),更为科学合理。

      3、数据库连接池,不少人,都推荐使用C3P0,能提高访问数据库的并发性能好几倍。

      4、采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat,也可以在多台服务器上分别部署Tomcat,Apache和Tomcat整合的方式还是JK方式。经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群> Apache+2Tomcat集群 > Apache集成Tomcat > 单个Tomcat。并且采用Apache+多Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。

      5、1. 设置MPM(Multi Processing Modules多道处理模块)。ThreadPerChild,这个参数用于设置每个进程的线程数,在Windows环境下默认值是64,最大值是1920,建议设置为100-500之间,服务器性能高的话值大一些,反之小一些。MaxRequestPerChild表示每个子进程能够处理的最大请求数。这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为很大的参数,否则设置一个较小的值,建议值是3000.

      2. 关闭DNS和名字解析 HostnameLookups off

      3. 打开UseCanonicalName模块 UseCanonicalName on

      4. 关闭多余模块 一般来说,不需要加载的模块有,mod_include.so、mod_autoindex.so、mod_access.so、mod_auth.so.

      5. 打开KeepAlive支持

      KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000

      根据实际经验,通过Apache和Tomcat集群的方式提高系统性能的效果十分明显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单Tomcat时的压力。

      web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 tomcat
      相关文章 更多
      tomcat启动失败的原因和解决办法详解
      tomcat启动失败的原因和解决办法详解

      详细分析 Tomcat 启动失败的常见原因,并提供可操作的排查和解决方案。

      修改tomcat的默认端口号配置文件及操作步骤
      修改tomcat的默认端口号配置文件及操作步骤

      详细讲解如何在Tomcat中通过编辑conf/server.xml文件来修改默认的HTTP连接器端口,包含文件路径查找、关键标签定位及重启服务的完整步骤。

      tomcat部署项目流程详细步骤与配置教程
      tomcat部署项目流程详细步骤与配置教程

      手把手教你如何在Tomcat中部署Web项目,包括自动部署与手动配置server.xml的方法,解决端口冲突和路径访问问题,适合Java初学者和运维人员参考。

      tomcat安装与环境变量配置教程及完整操作步骤
      tomcat安装与环境变量配置教程及完整操作步骤

      手把手教你在Windows系统中安装Apache Tomcat并配置关键环境变量。涵盖JDK验证、CATALINA_HOME设置及启动测试,确保Web服务器正常运行,适合Java初学者参考。

      flex tomcat端口被占用的问题分析及解决方法
      flex tomcat端口被占用的问题分析及解决方法

      启动Tomcat时若8080端口被占用,可在命令行输入`netstat-ano`查找PID,再于任务管理器结束该进程,最后重新启动Tomcat即可释放端口并正常运行。

      solaris 10下安装java+tomcat
      solaris 10下安装java+tomcat

      在Solaris系统上配置Ja va和Tomcat环境,说起来不算复杂,但一些细节如果不注意,很容易卡壳。下面以Solaris10为例,把整个流程拆开讲清楚,跟着步骤走就能搞定。 1. Ja va安装 先把安装文件 j2re-1_4_2_05-solaris-i586.sh 上传到 /export/

      Windows下Tomcat8注册为服务及开机自启设置
      Windows下Tomcat8注册为服务及开机自启设置

      在Windows10专业版1909上安装并配置Tomcat8.5.34以注册为服务并设置开机自启的实践笔记。以下是我对Tomcat进行的调整:0.1.注册为Windows服务0.2.更改开机启动方式0.3.POST提交长度修改0.4.改访问端口0.5.增加静态资源的缓存0.6.改内存0.7.加编码UTF-8默认设置:默认服务名:Tomcat8默认服务显示名称:ApacheTomcat8.5Tomcat8默认启动方式:手动启动默认内存:128m至256m下载官

      Web后端开发入门指南(2)
      Web后端开发入门指南(2)

      大家好,很高兴再次与你们见面,我是你们的朋友全栈君。设置JavaWeb应用开发环境——Tomcat服务器的下载与安装首先,搜索Tomcat,找到如下网址:点击链接,进入Tomcat官方网站。在左侧栏找到“Download”选项,选择最新版的Tomcat9,点击进入。向下滚动,找到如图所示的位置,Core核心部分提供zip版、tar.gz版(适用于Linux系统)、32位版、64位版以及安装版。如果不需要安装程序,请选择前几个版本;如果需要安装程序,则下载最后一个版本。选择适合自己的版本进行下载。安

      详细指引:Tomcat的部署和性能优化
      详细指引:Tomcat的部署和性能优化

      Tomcat是一个常用的JavaWeb应用服务器,用于部署和运行JavaWeb应用程序。下面是Tomcat部署和优化的详细教程:部署Tomcat:下载Tomcat:访问ApacheTomcat官方网站()下载适合你的操作系统的Tomcat版本。解压Tomcat:将下载的Tomcat压缩包解压到目标目录,例如/opt/tomcat。配置环境变量:将Tomcat的bin目录路径添加到系统的PATH环境变量中,以便在任何位置都可以使用Tomcat命令。启动Tomcat:打开终端,进入Tomcat的bin目录,执

      springBoot项目常用目录有哪些
      springBoot项目常用目录有哪些

      springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。