精华内容
下载资源
问答
  • tomcat是目前较为常用的Web容器,那么怎么配置tomcat才能使得自己的服务效率更高,今天我主要解释一下tomcat最大线程数(maxThreads)、最大等待数(acceptCount)和最大连接数(maxConnections)。 maxThreads...

        tomcat是目前较为常用的Web容器,那么怎么配置tomcat才能使得自己的服务效率更高,今天我主要解释一下tomcat的最大线程数(maxThreads)、最大等待数(acceptCount)和最大连接数(maxConnections)。

        maxThreads(最大线程数):每一次HTTP请求到达Web服务,tomcat都会创建一个线程来处理该请求,那么最大线程数决定了Web服务可以同时处理多少个请求,默认200.

        accepCount(最大等待数):当调用Web服务的HTTP请求数达到tomcat的最大线程数时,还有新的HTTP请求到来,这时tomcat会将该请求放在等待队列中,这个acceptCount就是指能够接受的最大等待数,默认100.如果等待队列也被放满了,这个时候再来新的请求就会被tomcat拒绝(connection refused)。

        maxConnections(最大连接数):这个参数是指在同一时间,tomcat能够接受的最大连接数。一般这个值要大于maxThreads+acceptCount。


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

    展开全文
  • 所以最大线程数是150,当前线程数超过这个数值时会出错。 解决办法:再开一个服务器,构成分布式。 在tomcat配置文件server.xml的配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统...

    1.源码分析

    Tomcat的server.xml中连接器设置如下
    在这里插入图片描述
    所以最大线程数是150,当前线程数超过这个数值时会出错。

    解决办法:再开一个服务器,构成分布式。

    在tomcat配置文件server.xml的配置中,和连接数相关的参数有:
    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100

    展开全文
  • 部署项目时需要根据服务器配置调整连接数 <Connector port="8080" protocol="HTTP/1.1"URIEncoding="UTF-8"minSpareThreads="25" --当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用默认值为4...

    部署项目时需要根据服务器配置调整连接数

    <Connector port="8080" protocol="HTTP/1.1"
    URIEncoding="UTF-8" 
    minSpareThreads="25" --当连接器第一次启协创建线程的数目,确保至少有这么多的空闲线程可用默认值为4
    maxSpareThreads="75" -- 允许存在空闲线程的最大数目,默认值为50
    enableLookups="false" --调用request、getRemoteHost()执行DNS查询,以返回远程主机的主机名,如果设置为false,则直接返回IP地址。
    disableUploadTimeout="true" --允许Servlet容器,正在执行使用一个较长的连接超时值,以使Servlet有较长的时间来完成它的执行,默认值为false
    connectionTimeout="20000" -- 设置连接的超时值,以毫秒为单位。默认值为60000=60秒
    acceptCount="1000" --当所有的可能处理的线程都正在使用时,在队列中排队请求的最大数目。当队列已满,任何接收到的请求都会被拒绝,默认值为10
    maxThreads="1000" --这指定可以由服务器处理的并发请求的最大数量。如果没有指定,这个属性的默认值为“200”
    useURIValidationHack="false"--减少它对一些url的不必要的检查从而减省开销
    compression="on" --指定是否对响应的数据进行压缩。off:表示禁止压缩、on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为off
    compressionMinSize="2048" --启用压缩的输出内容大小,默认为2KB 
    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"--哪些资源类型需要压缩
    redirectPort="8443"/>

    转载于:https://www.cnblogs.com/jvmYY/p/9639125.html

    展开全文
  • Tomcat 是 Apache 基金下的一个轻量级的Servlet容器,支持ServletJSP。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: tomcat是目前较为常用的Web容器,良好的配置能使用tomcat服务效率更高, 今天我...
  • 前言在使用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml中写到过:Connector的主要功能,是接收连接...
  • 前言在用tomcat时,经常会遇到连接数线程数之类的配置问题,要真正了解这些概念,必需先理解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接...
  • Linux下tomcat设置最大连接数

    千次阅读 2016-07-25 18:14:49
    处理:修改tomcat最大线程数。在server.xml里的connect标签里加参数,具体的参数名称请...加了maxThreads(默认200) acceptCount(默认100)两个参数,分别设置最大连接数。 1、环境说明 Linux下tomca
  • Tomcat7 设置最大连接数

    千次阅读 2015-10-31 16:42:33
    tomcat配置文件server.xml中的配置中,连接数相关的参数有:   minProcessors:最小空闲连接线程数,...acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • Tomcat 7最大并发连接数的配置

    千次阅读 2015-10-23 17:11:32
    tomcat配置文件server.xml中的配置中,连接数相关的参数有:   minProcessors:最小空闲连接线程数,...acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,
  • Tomcat连接数设置

    千次阅读 2019-08-12 20:22:45
    配置中,连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允许的最大连接数,应...
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • Tomcat参数调优:连接数和并发数连接数实战并发处理线程数 调整实战 配置项 含义 默认 建议 注意 备注 ConnectionTimeout 连接超时 20s 减少 与程序处理能力有关,处理能力越快设置短一点没关系 到底多久提示...
  • 最近服务器容易死掉,就寻找增大并发线程池的设置。...maxThreads : 最大线程数默认200minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即...
  • Tomcat的配置最大并发连接数

    千次阅读 2016-07-28 09:57:56
    几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- 在tomcat配置文件server.xml中的配置中,和连接...
  • tomcat连接数设置

    2016-06-22 09:56:00
    配置中,连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允许的最大连接数,应...
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • tomcat 调整线程数

    千次阅读 2010-12-14 14:26:00
    调整线程数 另外一个可通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理... Tomcat4中可以通过修改minProcessorsmaxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 259
精华内容 103
关键字:

tomcat最大连接数和最大线程数