精华内容
下载资源
问答
  • tomcat 最大并发数 并发量 tomcat 最大并发连接数 acceptCount不能说只要大于acceptCount的连接就一定被拒绝!
  • 设置springboot自带tomcat最大连接数最大并发数

    万次阅读 多人点赞 2018-11-09 15:48:24
    从源代码来看,最大连接数最大并发数默认是10000和200 可以通过工程下的application.yml配置文件来改变这个值 server:  tomcat:  uri-encoding: UTF-8  max-threads: 1000  max-connections: 20000...

    从源代码来看,最大连接数和最大并发数默认是10000和200

    可以通过工程下的application.yml配置文件来改变这个值

    server:
      tomcat:
        uri-encoding: UTF-8
        max-threads: 1000
        max-connections: 20000

    展开全文
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...

    这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下:

    几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):

    --------------------------------------------

    在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:  minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为falseconnectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令具体的配置信息:Java代码

    minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443"

    acceptCount="100" debug="0" connectionTimeout="20000 " useURIValidationHack="false"

    protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

    --------------------------------------------

    但是我仔细查了一圈,发现这个说法只是以讹传讹,并不适用于Tomcat 5.5以上的版本。这里先教大家怎么去查Tomcat的官网:

    首先,在这里:http://tomcat.apache.org/ 我们点击左侧导航栏中“Documentation”下的Tomcat 7.0,进入到这个链接中:http://tomcat.apache.org/tomcat-7.0-doc/index.html ,详细的信息我们不用都看,在左侧导航栏中有一个链接Configuration,我们点进去之后,再点击其左侧导航栏中connector一项的HTTP,就进入到HTTP连接数及其他相关属性的设置页面了。在这里(http://tomcat.apache.org/tomcat-7.0-doc/config/http.html)我们可以看到,在Connector的属性配置中,压根就没有maxProcessors等的设置选项。其中这句话已经介绍得很清楚:

    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). 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).

    所以我们需要设置的是maxThreads和acceptCount这两个值:

    其中,maxThreads的介绍如下:

    The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute is ignored as the connector will execute tasks using the executor rather than an internal thread pool.

    而acceptCount的介绍为:

    The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

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

    connectionTimeout="20000"

    redirectPort="8443" acceptCount="500" maxThreads="400" />

    Html代码  

    connectionTimeout="20000"

    redirectPort="8443" acceptCount="500" maxThreads="400" />

    connectionTimeout="20000"

    redirectPort="8443" acceptCount="500" maxThreads="400" />

    今天就记录这么多,希望大家以后在转载别人的经验时更用心些,不要老出现上面那些以讹传讹的情况。也希望能对有些朋友起到帮助。

    展开全文
  • 记得大学的《网络工程》有一个课后作业:用Java实现一个web服务器,当时想的是为了提高吞吐量,可以用多线程实现,即对于每一个客户端请求连接,都启动一个线程来处理,处理逻辑大概就是从socket里面读取http请求,...

    记得大学的《网络工程》有一个课后作业:用Java实现一个web服务器,当时想的是为了提高吞吐量,可以用多线程实现,即对于每一个客户端请求连接,都启动一个线程来处理,处理逻辑大概就是从socket里面读取http请求,解析执行请求,执行完把response写回socket,线程结束销毁。用多线程实现确实提高了吞吐量,但是也有一些问题:1)不断的线程创建销毁需要耗费大量的开销;2)线程之间的切换需要耗费很多开销;3)Java有创建最多线程数量的限制,具体可参考https://www.iteye.com/blog/jzhihui-1271122。

    如果要优化上面的实现,可以怎么做呢?其实参考tomcat的发展进程,就是优化的方向。

    1

    Tomcat处理用户请求的入口组件叫做Connector,其有两个主要的实现:BIO(blocking io)和NIO(non-blocking io)。

    7a25855056568e6772cabdc2d9ed9d2e.png

    简单讲,BIO的实现就是对上面多线程版本的一个改进,主要点在于把“每来一个连接启动一个线程处理”改成“每来一个连接都提交给线程池处理”。虽然线程池根据不同的配置,其工作行为会有所不同,但一般来讲,使用线程池的原则是:只需创建少量的线程就可以完成大量任务的执行,由于同时至多只有固定量的线程执行,剩余的任务会被放进queue里面缓冲起来,从这个角度看,这是一个典型的生产者-消费者模型。回到tomcat BIO,acceptor不断的接收连接,然后提交给线程池执行,acceptor就是生产者;线程池的每一个线程就是消费者,负责处理请求。

    由于socket连接是长连接,连接的创建销毁也是很耗资源的,于是http协议增加了一个keep-alive header,这个header的意思是提示服务器端,在返回http response之后,不要断开socket,继续处理后续http请求,这样做的目的就是为了提高资源的可重用性。那么,对于tomcat BIO的实现,在keep-alive场景下,会有什么问题呢?如果一个线程处理的socket需要保持keep-alive,其在执行完一个http请求之后,需要阻塞在那里以等待下一个http请求,不能马上结束(直到timeout);在某些情况下,这样就可能存在大量的阻塞线程,新的连接不能被处理。

    基于此,NIO就可以解决这个问题。NIO和BIO在请求处理部分的实现是一致的,都是基于线程池;不同的地方是:NIO的acceptor基于jdk nio实现,在收到一个连接之后,会把socketChannel注册到poller的selector上面,当socketChannel有数据可读时,poller就把此连接提交给线程池处理。回到上面keep-alive的场景,当一个线程处理完一个http请求之后,就可以马上结束,当前连接则回到selector继续监听接下来的http请求。所以,基于NIO的执行线程就不会出现基于BIO的阻塞情况。

    NIO的核心在于selector,selector可以识别到已经ready的连接和没有ready的连接;在之前的一篇多线程文章(对比Java和.NET多线程编程)里面提到过,jdk的concurrency API有一个CompletionService类,就有点类似于nio的原理。

    由于NIO天生的优势,tomcat从8.0版本开始就把NIO设成默认的Connector,而从8.5版本开始直接就把BIO去掉了。

    2

    在tomcat的官网有下面一段关于如何高并发处理请求的描述:

    Each incoming request requires a thread for the duration of that request. 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). 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). Any further simultaneous requests will receive "connection refused" errors, until resources are available to process them.

    - https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

    个人觉得其没有反映出maxConnections这个参数的作用,所以应该是:如果maxConnections小于maxThreads,最大创建的线程数就是maxConnections的值,最大连接数也是maxConnections的值;但是如果maxConnections大于maxThreads,最大创建的线程数就是maxThreads的值,最大连接数则是maxConnections的值。

    由于BIO和NIO底层实现的区别,配置maxConnections的值也需要区别考虑,这在maxConnections的默认值中就有所体现(对于BIO,maxConnections的默认值是maxThreads的值;而对于NIO,maxConnections的默认值则是10000):

    ad0dafe9ceb03dd58f46e9810f421af0.png

    3

    上面有提到,tomcat接收处理请求的过程其实就是一个生产者-消费者模型,影响tomcat高并发的配置也可以首先分别从这两个方面考虑:

    生产者

    7e1dc222f917ffb2d509e5e5f4159c29.png

    消费者

    81a0cab4b7bcad790413e1c45ce7c2dc.png

    Queue

    11a98e28f36bf63226b8dba50a6801ad.png

    4

    小结一下:

    • 线程池的本质就是节省了不断创建销毁线程的开销;加上queue的使用,增加了一层缓冲,一定程度缓解了计算机的压力。当然线程池的配置,需要根据要处理的任务(CPU密集型还是io密集型)来仔细的考虑。

    • Tomcat里面BIO和NIO的最大区别在于读取下一个请求时是否需要阻塞,这对于keep-alive的场景尤其重要,NIO可以大大提高吞吐量。

    • 基于queue的生成者-消费者模型,也常常应用在系统架构层面,以缓冲生产者和消费者之间处理速度的gap,比如秒杀系统。

    展开全文
  • 这是个很简单的问题,但是搜了一圈,发现大家...几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- ...

    转自: http://blog.csdn.net/qysh123/article/details/11678903

    这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下:

    几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):

    --------------------------------------------

    在tomcat配置文件server.xml中的<Connector ... />配置中,和连接数相关的参数有:
      
    minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
    maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
    acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
    enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
    connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
    其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。
    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令

    具体的配置信息:
    Java代码

     

    1. <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080"
    2. minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443"
    3. acceptCount="100" debug="0" connectionTimeout="20000 " useURIValidationHack="false"
    4. protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

    --------------------------------------------

    但是我仔细查了一圈,发现这个说法只是以讹传讹,并不适用于Tomcat 5.5以上的版本。这里先教大家怎么去查Tomcat的官网:

    首先,在这里:http://tomcat.apache.org/ 我们点击左侧导航栏中“Documentation”下的Tomcat 7.0,进入到这个链接中:http://tomcat.apache.org/tomcat-7.0-doc/index.html ,详细的信息我们不用都看,在左侧导航栏中有一个链接Configuration,我们点进去之后,再点击其左侧导航栏中connector一项的HTTP,就进入到HTTP连接数及其他相关属性的设置页面了。在这里(http://tomcat.apache.org/tomcat-7.0-doc/config/http.html)我们可以看到,在Connector的属性配置中,压根就没有maxProcessors等的设置选项。其中这句话已经介绍得很清楚:

    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). 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).

    所以我们需要设置的是maxThreads和acceptCount这两个值:

    其中,maxThreads的介绍如下:

    The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute is ignored as the connector will execute tasks using the executor rather than an internal thread pool.

    而acceptCount的介绍为:

    The maximum queue length for incoming connection requests when all possible request processing threads are in use. Any requests received when the queue is full will be refused. The default value is 100.

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

     

    1. <Connector port="8080" protocol="HTTP/1.1"   
    2.            connectionTimeout="20000"   
    3.            redirectPort="8443" acceptCount="500" maxThreads="400" />  


    今天就记录这么多,希望大家以后在转载别人的经验时更用心些,不要老出现上面那些以讹传讹的情况。也希望能对有些朋友起到帮助。

    转载于:https://www.cnblogs.com/xifenglou/p/7325032.html

    展开全文
  • 转自: ...所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置...
  • tomcat优化之增加Tomcat最大连接数

    千次阅读 2019-06-13 16:51:54
    我在做完一个XXX项目后,测试时发现并发数量增加到一定程度就会很卡,于是我想到了是不是tomcat最大连接数设置有限制.果不其然,配置文件中最大值才500,于是我更改了最大连接数,根据业务我修改了连接数为1500,完美的...
  • tomCat最大连接数

    千次阅读 2017-03-31 18:54:17
    这是个很简单的问题,但是搜了一圈,发现大家都写错了。...几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): ---------------------------------
  • 这是个很简单的问题,但是搜了一圈,发现大家...几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- ...
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • 所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的):--------------------------------------------在tomcat配置文件server.xml中的配置中...
  • 暂无
  • 最近服务器容易死掉,就寻找增大并发线程池的设置。...maxThreads : 最大线程默认200minProcessors:最小空闲连接线程,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程,即...
  • 点击打开链接
  • 这里先教大家怎么去查Tomcat的官网:首先,在这里:http://tomcat.apache.org/ 我们点击左侧导航栏中“Documentation”下的Tomcat 7.0,进入到这个链接中:http://tomcat.apache.org/tomcat-7.0-doc/index.html ,...
  • ...这是个很简单的问题,但是搜了一圈,发现大家都写错了。...几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------
  • Tomcat 7最大并发连接数的配置

    千次阅读 2015-10-23 17:11:32
    tomcat配置文件server.xml中的配置中,和连接数相关的参数有:   minProcessors:最小空闲连接线程数,...acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100 enableLookups:是否反查域名,
  • tomcat设置了Max threads为2000,可是当并发起来了以后,Current thread count达到了一个峰值,之后这些线程一直在等待的状态,怎么才能将其释放呢?
  • Tomcat 7最大并发连接数的正确修改方法这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下:几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是...
  • Tomcat的配置最大并发连接数

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 421
精华内容 168
关键字:

tomcat最大连接数最大并发数