精华内容
下载资源
问答
  • Tomcat容器的最大并发

    千次阅读 2017-08-24 18:21:33
    TOMCAT,应用支持多少最大...tomcat配置文件conf\server.xml中配置中,和连接数相关参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:
    TOMCAT,应用支持多少最大并发数,不是应用控制的,是容器控制的,

    如果某个项目上的同时并发数最大,哪么请调整TOMCAT对外的最大并发数,以TOMCAT7为例,

    tomcat配置文件conf\server.xml中的配置中,和连接数相关的参数有:

    • minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
    • maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
    • acceptCount:允许的最大连接数,即等待队列,指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,应大于等于maxProcessors,默认值为100,示例

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" acceptCount="200" maxThreads="180" />
    这个一般不用调,默认就可以了,如果真的有日均上万单的时候,可以酌情调整一下


    调整TOMCAT的JVM参数

    • 大量的并发也意味着大量的服务器资源,所以修改一下tomcat的JVM参数也是必要的,示例
    Windows环境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:set JAVA_OPTS=-Xms256m -Xmx1024m
    Linux环境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m -Xmx1024m’

    • 酌情调整一下,如果并发很多,这个Xmx调大一些。

    展开全文
  • 1.基本上在server.xml的Connector(连接器)配置...2.如果配置Executor(线程池方式),则瓶颈就在浏览器支持的最大ws连接数了,即便都用默认参数。chrome一个标签页大约255,firefox大约200。 如果创建的ws连接太多 ...

    1.基本上在server.xml的Connector(连接器)配置里配maxThreads是多少,就只能创建多少个websocket连接。不管协议是用BIO还是NIO。超过maxThreads的值,浏览器创建ws对象时可能不报错,但是尝试发送消息会失败,tomcat后台也不会有动静。

    2.配置了Executor(线程池方式),则没有maxThreads的限制。

    1. 瓶颈首先在浏览器支持的最大ws连接数,chrome支持大约254,firefox大约200。
    2. 其次是<Connector>的maxConnections属性,也直接决定能接入的ws数量,默认是10000或者8192,已经很大了。

    如果创建的ws连接太多,服务会明显变卡,这个应该和线程池的配置和启动时参数设置有关系,我现在还没有调试经验。

     

    展开全文
  • SpringBoot内置Tomcat,再默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,200个线程如何处理10000条连接的? Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个连接...

            SpringBoot内置Tomcat,再默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,200个线程如何处理10000条连接的?

            Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个连接,另一种就是NIO,一个线程处理多个连接。由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。

            默认值可以在spring-boot-autoconfigure-2.1.0.RELEASE 包中看到,解压反编译/web/ServerProperties.class文件就可以看到默认配置

    展开全文
  • Tomcat 是 Apache 基金下一个轻量级Servlet容器,支持Servlet和JSP。Tomcat服务器本身具有Web服务器功能,可以作为独立Web服务器来使用。一、Spring Boot应用中Tomcat建议配置Spring Boot...

    在 Spring Boot框架中,我们使用最多的是Tomcat,这是Spring Boot默认的容器技术,而且是内嵌式的 Tomcat。

    Tomcat 是 Apache 基金下的一个轻量级的Servlet容器,支持Servlet和JSP。Tomcat服务器本身具有Web服务器的功能,可以作为独立的Web服务器来使用。

    一、Spring Boot应用中Tomcat建议配置

    Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。

    要了解具体参数的默认值,一个简单的方法是在application.properties 配置文件中输入配置项, 默认值就会显示出来。

    ##最大工作线程数,默认200。(4核8G内存, 线程数经验值800,操作系统做线程之间的切换调度是有系统开销的,所以不是越多越好。)

    server. tomcat.max-threads=200

    ##最大连接数默认是10000

    server.tomcat.max-connections=10000

    ## 等待队列长度,默认100。

    server.tomcat.accept-count=100

    ##最小工作空闲线程数,默认10。(可以适当增大一些,以便应对突然增长的访问量)

    server. tomcat.min-spare-threads=100

    对应application.yml 配置文件如下所示:

    server:

    tomcat:

    accept-count:100

    max-connections:10000#最大可被连接数,默认为10000

    max-threads:200#最大工作线程数

    min-spare-threads:10#最小工作线程数

    4核8G内存单进程调度线程数800-1000,超过这个并发数之后,将会花费巨大的时间在CPU调度上。

    等待队列长度:队列做缓冲池用,但也不能无限长,消耗内存,出入队列也耗CPU。

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

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

    针对4C 8G配置,可以参考建议值:

    server:

    tomcat:

    accept-count:1000

    max-connections:1000

    max-threads:800

    min-spare-threads:100

    Spring Boot的默认配置信息,都在 spring-boot-autoconfigure版本号jar 这个包中。其中上述

    Tomcat的配置在/web/ServerProperties.java 中。

    二、最 大 并 发 量-maxThreads 和maxConnections参数

    比 较 容 易 弄 混的 是 maxThreads 和maxConnections这两个参数:

    maxThreads是指Tomcat线程池最多能起的线程数,而maxConnections则是Tomcat一瞬间最多能够处理的并发连接数。

    比如maxThreads=1000 maxConnections=800,假设某一瞬间的并发是1000,那么最终Tomcat的线程数将会是800, 即同时处理800个请求,剩余200 进 入 队 列"排 队",如 果acceptCount=100(100个请求进入排队),另外100个请求会被拒掉。

    并发量指的是连接数,还是线程数?

    当然是连接数(maxConnections)。

    200个线程如何处理1000条连接?

    Tomcat有两种处理连接的模式,一种是BIO,一个线程只处理一个Socket连接;另一种就是

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

    Tomcat的最大连接数参数是maxConnections, 这个值表示最多可以有多少个Socket连接到Tomcat上。BIO模式下默认最大连接数是它的最大线程数(缺省是200),NIO模式下默认是10000,APR模式则是8192。

    为什么不开更多线程?

    多开线程的代价就是,增加上下文切换的时间, 浪费CPU时间。另外还有就是线程数增多,每个线程分配到的时间片就变少。多开线程并不等于提高处理效率。

    那增加最大连接数(maxConnections)呢?

    增加最大连接数,支持的并发量确实可以上去。但是在没有改变硬件条件的情况下,这种并发量的提升必定以牺牲响应时间为代价。

    三、maxConnections和acceptCount参数

    maxConnections和acceptCount的关系为:当连接数达到最大值maxConnections后,系统会继续 接 收 连接,进行 排队,但不会 超过acceptCount的值。

    Tomcat最大连接数取决于maxConnections这个值加上acceptCount这个值,在连接数达到了maxConenctions之后,Tomcat仍会保持住连接,但是不处理,等待其它请求处理完毕之后才会处理这个请求。

    当队列(acceptCount)已满时,任何的连接请求都将被拒绝。acceptCount的默认值为100。

    简而言之,当调用HTTP请求数达到Tomcat的最大连接数时,还有新的HTTP请求到来,这时Tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100。如果等待队列也被放满了,这个时候再来新的请求就会被Tomcat拒绝(connection refused)。

    下面就是前端发起请求数,超出acceptCount最大等待数,无法建立连接(ECONNRESET,

    Connection was reset)。

    四、图解maxConnections、maxThreads、acceptCount关系

    maxConnections、maxThreads、acceptCount 关系图如下:

    4ee60e3a9737da30028a0a3f45998c7a.png

    用一个形象的比喻,通俗易懂的解释一下Tomcat的最大线程数(maxThreads)、最大等待 数(acceptCount)和 最 大 连 接 数(maxConnections)三者之间的关系。

    我们可以把Tomcat比做一个火锅店,流程是取号、入座、叫服务员,可以做一下三个形象的类比:

    (1)acceptCount最大等待数

    可以类比为火锅店的排号处能够容纳排号的最大数量;排号的数量不是无限制的,火锅店的排号到了一定数据量之后,服务往往会说:已经客满。

    (2)maxConnections 最大连接数

    可以类比为火锅店的大堂的餐桌数量,也就是可以就餐的桌数。如果所有的桌子都已经坐满,则表示餐厅已满,已经达到了服务的数量上线,不能再有顾客进入餐厅了。

    (3)maxThreads:最大线程数

    可以类比为厨师的个数。每一个厨师,在同一时刻,只能给一张餐桌炒菜,就像极了JVM中的一条线程。

    整个就餐的流程,大致如下:

    (1)取号:如果maxConnections连接数没有满,就不需要取号,因为还有空余的餐桌,直接被大堂服务员领上餐桌,点菜就餐即可。如果maxConnections连接数满了,但是取号人数没有达到acceptCount,则取号成功。如果取号人数已达到acceptCount,则拿号失败,会得到Tomcat的Connection refused connect 的回复信息。

    (2)上桌:如果有餐桌空出来了,表示maxConnections连接数没有满,排队的人,可以进入大堂上桌就餐。

    (3)就餐:就餐需要厨师炒菜。厨师的数量, 比顾客的数量,肯定会少一些。一个厨师一定需要给多张餐桌炒菜,如果就餐的人越多,厨师也会忙不过来。这时候就可以增加厨师,一增加到上限maxThreads的值,如果还是不够,只能是拖慢每一张餐桌的上菜速度,这种情况,就是大家常见的"上一道菜吃光了,下一道菜还没有上"尴尬场景。

    五、connectionTimeout超时设置

    这个参数容易混淆,先看看官方的解释:

    Time that connectors wait for another HTTP request before closing the connection.

    When not set, the connector's container-specific default is used. Use a value of -1 to indicate no(that is,an infinite)timeout.

    connectionTimeout是连接器在关闭连接之前, 等待下一个HTTP请求的时间。注意:不是请求超时的时间,请求超时时间需要在Client端设置。

    如果没有设置,则使用连接器对应特定容器(Tomcat)的默认值。如果设置为-1,表示没有超时设置,也就是无限时间。

    Tomcat容器中connectionTimeout 以毫秒为单位,默认设置为20秒。

    简单来说,connectionTimeout是本条连接(connector)等多久没数据发送过来,就关闭连接。这样,可以避免连接数被占满。

    展开全文
  • tomcat默认支持的最大线程是200,当线程达到200后,将新的线程加入等待队列,等待队列默认100,当等待队列达到100后,直接拒绝此次请求返回connectionrefused。 连接超时时间默认为20秒。 来着tomcat官方文档...
  • 在网上看到这二者比较都莫衷一是。...还有,resin4.0.35免费版还有最大连接数256限制吗? 网上很多人说v3时候是有这个限制,写死在代码里了。 我找了resin4.0.35源码也没确定到底还有没有。
  • Spring Boot应用支持的最大...我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。并发量指的是连接数,还是线程数?当然是连接数。200个线程如何处理10000条连接?Tomcat有两种处理连接的模式,...
  • Tomcat的最大并发数是可以配置的,而且并没有限制你所配置的并发数数量,需要根据你的应用...Tomcat支持的并发数与操作系统也是有关系的,一些操作系统会限制外来的连接数。 实际运用中,最大并发数与硬件性能和C...
  • Spring Boot应用支持的最大...我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。并发量指的是连接数,还是线程数?当然是连接数。200个线程如何处理10000条连接?Tomcat有两种处理连接的模式,...
  • tomcat连接配置

    千次阅读 2017-03-07 12:52:54
    在Connector里面加上 keepAliveTimeout="150000" maxKeepAliveRequests="-1" 其中: keepAliveTimeout:表示在下次请求...maxKeepAliveRequests:表示该连接最大支持的请求。超过该请求...
  • tomcat 连接池参数研究

    2011-04-14 17:49:00
     maxActive 属性 表示并发情况下最大可从连接池中获取的连接数。如果数据库不是单独,供一个应用使用,通过设置maxActive参数可以避免某个应用无限制获取连接对其他应用造成影响,如果一个数据库只是用来...
  • Tomcat的最大并发数是可以配置的,而且并没有限制你所配置的并发数数量,需要根据你的...Tomcat支持的并发数与操作系统也是有关系的,一些操作系统会限制外来的连接数。 实际运用中,最大并发数与硬件性能和CPU数...
  • maxActive 连接池支持的最大连接数,这里取值为20,表示同时最多有20个数据库连接。设 0 为没有限制。 maxIdle 连接池中最多可空闲maxIdle个连接 ,这里取值为20,表示即使没有数据库连接时依然可以保持20空闲的...
  • Tomcat里用线城池来控制并发用户个数。... tomcat配置最大连接数 server.xml中配置 &lt;Connector port="8080" maxThreads="150" minSpareThreads="25" ...
  • tomcat8在哪里配置websocket的参数,在哪个文件中呢,我要配置org.apache.tomcat.websocket.executorMaxSize这个参数,来修改websocket的最大连接数.另外有没有人测试过tomcat能够支持的websocket最大连接数是多少,谢谢
  • 内存优化 maxThreads 客户请求最大... maxSpareThreads Tomcat连接的最大空闲 socket 线程   enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名   redirectPort 在需要基于安全
  • --最大连接数--> <property name="c3p0.timeout">100</property><!--连接超时时间--> <!--每隔100秒检测连接是否可正常使用 --> <property name="c3p0.idle_test_period">100 <!--当池中连接耗尽时候,...
  • 批处理多开Tomcat

    2018-04-28 09:44:30
    最近在进行并发裸机测试,想测试下tomcat能承载高并发支持...我修改了tomcat最大连接数但是还是会出现当并发达到200时出现链接被拒绝情况从而使用到Nginx做tomcat集群处理,让tomcat能够分摊压力,修改了tomc...
  • Tomcat优化参数

    2017-09-19 15:15:02
    参数说明: ...maxSpareThreads Tomcat连接的最大空闲 socket 线程  enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名  redirectPort 在需要基于安全通道的场合,把客户请求转
  • springboot 默认tomcat配置

    千次阅读 2019-06-19 10:03:00
    Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。当在配置文件中敲出max后提示值就是它的默认值。 我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 ...
  • Tomcat理解Executor和Connector关系

    千次阅读 2019-01-28 16:10:48
    异步servlet和非阻塞Connector,一个是Executor,一个是Connector,两者的工作阶段不同。 一.Connector 指客户端请求服务器,好比春运通过12306购票,许多客户端连接到12306...即可支持的每秒最大连接数。 C...
  • Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改。我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 这个不同SpringBoot 版本可能有所细微差别。本文...
  • jboss 和tomcat区别

    2013-11-25 17:59:45
     而JBoss Web采用业界最优开源Java Web引擎, 将Java社区中下载量最大,用户最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性能有限,在很多地方表现有欠缺,如活动...
  • -- acceptCount 允许的最大连接数,应大于等于 maxProcessors--> <!-- enableLookups 如果为 true,requst.getRemoteHost 会执行 DNS 查 找,反向解析 ip 对应域名或主机名--> protocol="org.apache.coyote....
  • 【杂谈】Spring Boot 默认支持的并发量 Spring Boot应用支持的最大并发量是多少?...我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 并发量指的是连接数,还是线程数? 当然是连接数。...
  • Spring Boot应用支持的最大并发量是多少?...我们可以看到默认设置中,Tomcat的最大线程数是200,最大连接数是10000。 并发量指的是连接数,还是线程数? 当然是连接数。 200个线程如何处理10000条连...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

tomcat支持的最大连接数