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

    2019-10-11 09:04:17
    Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发 如何设置提高并发数 修改catalina.sh: rem 以下配置为JVM参数调优 set JAVA_OPTS= -server rem 以服务器模式启动,启动速度慢,但更稳定,性能更...

    Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发

     

    如何设置提高并发数

    修改catalina.sh:

    rem 以下配置为JVM参数调优
    set JAVA_OPTS=
    -server     rem 以服务器模式启动,启动速度慢,但更稳定,性能更好
    -Xms8192M   rem 由于本机内存为16G,这里就设置成8G(实际并未达到最大内存的80%)
    -Xmx8192M   rem -Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
    -Xss512k 
    -XX:+AggressiveOpts 
    -XX:+UseBiasedLocking 
    -XX:PermSize=64M    rem 内存永久保留区域 
    -XX:MaxPermSize=300M     rem 内存永久保留区域 
    -XX:+DisableExplicitGC  rem 禁止System.gc(),免得误调用gc方法影响性能
    -XX:MaxTenuringThreshold=31 
    -XX:+UseConcMarkSweepGC 
    -XX:+UseParNewGC   rem 对年轻代采用多线程并行回收,这样收得快;
    -XX:+CMSParallelRemarkEnabled  rem 带CMS相关的是并发回收(CMS垃圾收集器)
    -XX:+UseCMSCompactAtFullCollection  rem 带CMS相关的是并发回收(CMS垃圾收集器)
    -XX:LargePageSizeInBytes=128m  
    -XX:+UseFastAccessorMethods 
    -XX:+UseCMSInitiatingOccupancyOnly rem 带CMS相关的是并发回收(CMS垃圾收集器)
    -Djava.awt.headless=true
    

    修改Server配置

    比如在SpringBoot中通过修改Application.properties文件 server.tomcat.max-threads=1000 

     

    maxThreads="1000" //最大并发数 
    minSpareThreads="100"//初始化时创建的线程数
    maxSpareThreads="500"//一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    acceptCount="700"// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

     

     

    展开全文
  • tomcat 最大并发

    2016-09-30 15:36:00
    只针对BIO模式,目标请求会sleep两秒再返回结果,通过jmeter测试工具进行并发测试 操作系统:windows && linux tomcat7测试: <Connector port="8080" protocol=...

    只针对BIO模式,目标请求会sleep两秒再返回结果,通过jmeter测试工具进行并发测试

    操作系统:windows && linux

    tomcat7测试:

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

    文档:http://localhost:8080/docs/config/http.html

    官方解释:acceptCount对暂时无法执行的请求进行队列保存,超出设置则拒绝连接。

    测试发现无法限制住最大并发数,所有请求都可以依次执行,每次有1个线程执行(maxThreads=1)

    最大并发数如果过大,大于acceptCount值好几倍,会随机出现连接被拒绝。

    进一步调查-----------------------------------------------------------------------------------------------------------------------------------

    首先关于tcp queue简单介绍:

    tcp三次握手:

    第一次,客户端发送syn,等待服务端确认,此时客户端进入SYN_SEND状态

    第二次,服务端接收syn包并确认,发送syn+ack给客户端,此时服务端进入SYN_RECV状态

    第三次,客户端收到syn+ack,再次向服务端发送ack,此时客户端进入ESTAB状态(注意,此时服务端未必进入ESTAB状态

     

    半连接队列:服务端维护的与客户端保持SYN_RECV状态的连接队列,等待客户端回复,当收到客户端ack后,如果条件允许(全连接队列未达到最大值),服务端进入ESTAB状态,从半连接队列移到全连接队列的队尾。

    全连接队列:完成三次握手等待accept。完成三次握手即进入了全连接队列的队尾,当进程调用accept时,全连接队列中的队头项将返回给进程,并从队列中移出连接。如果该队列为空,那么进程将被投入睡眠,直到TCP在该队列中放入一项才唤醒它。

    在listen(int sockfd, int backlog)中,backlog在Linux 2.2之后表示的是已完成三次握手但还未被应用程序accept的队列长度。

     

    全连接队列满,半连接队列未满:

    客户端发出syn分节,服务端收下,并向客户端发出syn+ack。

    客户端收到服务端syn+ack后,成为ESTAB状态,向服务端发送第三次握手ack。

    服务端收到ack后,发现全连接队列已满,默认情况下,服务端什么也不做,状态依然是SYN_RECV。

    客户端会重传syn和ack,当达到一定的阈值(/proc/sys/net/ipv4/tcp_synack_retries)时,客户端与服务端断开连接,服务端删除客户端在半连接队列中的syn分节。

    全连接、半连接队列都满:

    客户端发出syn分节,服务端发现半连接队列已满,直接丢弃syn,使客户端重传syn。

    客户端重传syn,再次到达服务端后,服务端发现已经重传过,则收下,并告诉客户端syn+ack。

    后续流程与上述一致,相比之下,多了一次客户端重传syn分节。

    修改tcp参数配置:

    tcp_synack_retries和tcp_syn_retries定义SYN 的重试连接次数

    /etc/rc.d/rc.local文件中追加:

    sysctl -w net.ipv4.tcp_synack_retries=3

    sysctl -w net.ipv4.tcp_syn_retries=3

    重启。

    也可直接执行命令:

    sysctl -w net.ipv4.tcp_synack_retries=1

    sysctl -w net.ipv4.tcp_syn_retries=3

    关于队列的长度:

    半连接队列:≈2 * min(backlog, net.ipv4.tcpmax_syn_backlog) 

    全连接队列:min(/proc/sys/net/core/somaxconn(本系统128), backlog),表示最多有 min() + 1个 ESTAB 的连接等待 accept()。

    修改somaxconn,

    在/etc/sysctl.conf中添加如下:

    net.core.somaxconn = 2048

    然后在终端中执行

    sysctl -p

    进一步试验-------------------------------------------------------------------------------------------------------------------------------------------------------------------

    在linux下,通过ss -ant进行观察tcp queue

    并发5个请求

     

    acceptCount配置作为socket中的backlog的值,如果acceptCount不设置或者设置为0,则会取默认值,经测试是100。

    全连接队列大小为 min(/proc/sys/net/core/somaxconn(本系统128), 2) + 1=3,即等待服务端accept的ESTAB状态的连接最多有3个,如Recv-Q所示。

    3个Recv-Q为323(表示请求bytes数值)的ESTAB状态的连接正等待server accept

    1个Recv-Q为0的ESTAB状态的连接表示server端已经accept了请求,只是还没有返回结果(sleep中)。

    1个SYN-RECV状态是半连接状态,位于半连接队列当中(此时客户端已经处于ESTAB状态),全连接队列已经满了。

    对于处在半连接状态的连接,客户端会定时重发,直至达到阈值,如下:

    第一次握手

     第二次握手

     第三次握手

     客户端发送数据包

    但由于此时服务端未能将连接从半连接队列移至全连接队列,状态依然是SYN-RECV,即未得到服务端ack,因此客户端继续发数据包

    发送几次之后,服务端有了回应,告诉客户端说,你之前发的包丢了

    然后客户端也告诉服务端,丢失的状态、对应的id号及次数,这里的43就是第三次握手的43,失败次数是1

    然后客户端又开始重传了

    终于服务端受不了了,此时客户端服务端彻底断开。

    通过调整ipv4.tcp_synack_retries和ipv4.tcp_syn_retries,可以增加重试次数

     

    结论:

    对于tomcat中的acceptCount只是全连接队列的大小,就是说客户端和服务端都已经是ESTAB状态的连接,不考虑connectionTime的情况,在此队列中的连接最终都会被处理。对于大于acceptCount的连接请求,如果在tcp重试阈值范围之内完成半连接到全连接的状态转换,那么还是有机会被服务端accept并处理的。

    因此,不能说只要大于acceptCount的连接就一定被拒绝!

     

     

    参考文献:

    http://www.cnblogs.com/leezhxing/p/5329786.html

    http://blog.chinaunix.net/uid-24782829-id-3456109.html

    http://www.cnblogs.com/menghuanbiao/p/5212131.html

    http://www.cnblogs.com/zengkefu/p/5606696.html 有详细的源码分析

    转载于:https://www.cnblogs.com/liuxinan/p/5917168.html

    展开全文
  • 这是个很简单的问题,但是搜了一圈,发现大家...几乎所有的中文网页都介绍,要修改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最大并发(1000)

    2014-09-18 09:19:47
    当一个进程有 500 个线程在跑的话,那性能已经是很低很...Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群

    当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大

    当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群

    Windows 每个进程中的线程数不允许超过 2000

    Linux 每个进程中的线程数不允许超过 1000

    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发

    maxThreads="1000" 最大并发数
    minSpareThreads="100"///初始化时创建的线程数
    maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    acceptCount="700"// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    展开全文
  • 这是个很简单的问题,但是搜了一圈,发现大家...几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- ...
  • 这里先教大家怎么去查Tomcat的官网:首先,在这里:http://tomcat.apache.org/ 我们点击左侧导航栏中“Documentation”下的Tomcat 7.0,进入到这个链接中:http://tomcat.apache.org/tomcat-7.0-doc/index.html ,...
  • https://blog.csdn.net/wuhenzhangxing   https://blog.csdn.net/wuhenzhangxing   https://blog.csdn.net/changhenshui1990/article/details/70052991服务器实现原理
  • 只针对BIO模式,目标请求会sleep两秒再返回结果,通过jmeter测试工具进行并发测试 操作系统:windows &amp;&amp; linux tomcat7测试: &lt;Connector port="8080" protocol="...
  • 之后遇到问题最好先查看下官方文档,很多开源项目版本差异很大,官文文档避免走弯路,其实不怕走弯,就怕走错造成损失就西内了 ????点击这里????
  • Tomcat最大并发

    千次阅读 2016-11-15 18:14:48
    Tomcat最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。  Tomcat默认的HTTP实现是采用阻塞式的Socket通信,每个...
  • Tomcat修改最大并发

    千次阅读 2019-07-11 10:50:53
    几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- 在tomcat配置文件server.xml中的<Connector ... ...
  • Tomcat最大并发数是可以配置的,而且并没有限制你所配置的并发数数量,需要根据你的应用处理request所需要的带宽,CPU,内存,压力等进行配置。 还有一种说法是Tomcat的理论并发数量极限是服务器最大可用的端口数...
  • Tomcat最大并发配置

    2018-01-08 16:18:00
    Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发。      操作系统对于进程中的线程数有一定的限制:  Windows 每个进程中的线程数不允许超过 2000  Linux 每个进程中的线程数不允许超过 ...
  • Tomcat并发能力

    2020-09-25 14:08:38
    一、一些限制 Windows 每个进程中的线程数不允许超过 2000 Linux 每个进程中的线程数不允许超过 1000 ...Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了, Tomcat最大并发数是可以
  • Tomcat容器的最大并发

    千次阅读 2017-08-24 18:21:33
    TOMCAT,应用支持多少最大并发数,不是应用控制的,是容器控制的, 如果某个项目上的同时并发数最大,哪么请调整TOMCAT对外的最大并发数,以TOMCAT7为例, tomcat配置文件conf\server.xml中的配置中,和连接数相关...
  • tomcat并发

    2016-11-27 20:56:00
    Tomcat最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。  Tomcat默认的HTTP实现是采用阻塞式的Socket通信,每个请求...
  • springboot内置tomcat调优并发线程数

    千次阅读 2020-12-03 11:47:57
    目录前言参数线程池核心线程数线程池最大线程数请求最大连接数accept-counttomcat线程池处理机制总结 ...server.tomcat.max-threads:该参数为tomcat处理业务的最大线程数大小,默认值为200,当对并发量有一点值时可
  • 1、Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,可配置修改。 2、当应用达到200以上并发的时候,就应考虑集群部署。 3、Tomcat在服务器中是一个进程。 操作系统对于进程中的线程数有一定的限制...
  • 设置springboot自带tomcat的最大连接数和最大并发

    万次阅读 多人点赞 2018-11-09 15:48:24
    从源代码来看,最大连接数和最大并发数默认是10000和200 可以通过工程下的application.yml配置文件来改变这个值 server:  tomcat:  uri-encoding: UTF-8  max-threads: 1000  max-connections: 20000...
  • Tomcat MySQL Nginx Reids最大并发Tomcat tomcat 默认配置的最大请求数是150,也就是说同时支持150个并发。具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给JVM的内存越多性能也就越高,但也会...
  • Tomcat 7最大并发连接数的正确修改方法 转载:http://blog.csdn.net/qysh123/article/details/11678903 这是个很简单的问题,但是搜了一圈,发现大家都写错了。所以这里总结一下: 几乎所有的中文...

空空如也

空空如也

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

tomcat最大并发