我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 运维优化 > linux下配置tomcat7并发数
总共48087条微博

动态微博

查看: 3545|回复: 1

linux下配置tomcat7并发数

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2016-06-24 17:55:00 |只看该作者 |倒序浏览
    首先发现网上漫天的资料都是很老的版本,现在应该都是tomcat6.0或者7.0的了。所以很多老的配置已经过时了。比如minProcessors,maxProcessors这两个值网上大多资料说明修改他们俩,但是这两个值在
    http://tomcat.apache.org/tomcat-7.0-doc/config/http.html 官方的说明中并不存在。
    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 theConnector, 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.

    如果我们达到更多的并发请求,而这些请求不是我们当前的进程线可以处理得了的,那么额外的线程就会被重新配置以达到配置最大化(maxThreads属性所设定的值)。如果还有并发要求,那么他们就会被并入由连接器创建得服务器接口,从而达到配置最大化(直至达到acceptCount属性所设定的值)。
    这个是tomcat官方的解释,在文中很清楚的说明了,修改最大连接数的办法。

    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.

    处理request的最大线程数是由Connector决定的。这个值决定着目前可处理的最大并发数,如果没有设置,默认值为200,如果executor 与connector相关联,那么这个值将会被忽略,
    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.

    网上很多资料显示,linux的最大线程数是1000,window会高一点2000多。这个应该是根据机器cpu等的性能来计算的。

    实际的配置数据应该是根据自己的机器与负载情况多尝试找一个最优配置。

    1、tomcat的BIO,NIO,APR三种高级Connector运行模式。

    tomcat支持以上三种运行模式。

    BIO:同步阻塞,是一个连接一个线程。客户端有链接请求时服务器就启动一个线程处理,链接不操作会造成资源浪费,可以考虑线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中。
    NIO:同步非阻塞,是一个请求一个线程。客户端所有的连接请求都会注册到多路复用器,多路复用器轮询到连接有I/O请求时启动一个线程处理。适用于连接数目多且连接比较短的架构,比如聊天服务器,并发局限于应用中。
    AIO:异步非阻塞,是一个有效请求一个线程。服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS完成再通知服务器启动线程处理。适用于连接数目多且连接比较长的架构,比如相册服务器,
    2、附加几个常用参数的解释。

    connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,通常可设置为20000毫秒。

    URIEncoding:指定Tomcat 容器的URL
    编码格式。

    enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。建议设置false,能提高部分性能。

    maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200

    acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

    minSpareThreads:表示即使没有人使用也开这么多空线程等待
    .

    maxConnections:这个貌似应该是新加的参数吧,我没求证。服务器能接受和处理的最大数量,bio默认是maxThreads
    的值,nio默认10000,APR/native 默认是8192。

    keepAliveTimeout:这个是保持长连接的时间限制,默认就是connectionTimeout 设置的时间。

    maxSpareThreads:表示如果最多可以空75个线程,例如某时刻有80人访问,之后没有人访问了,则tomcat不会保留80个空线程,而是关闭5个空的。这个参数在7.0也删掉了。

    unpackWARs:如果为true ,则tomcat 会自动将WAR 文件解压,否则不解压,直接从WAR 文件中运行应用程序。


    如:
    <Connector   port="8080"   
          maxThreads="150"     
          minSpareThreads="25"  
          acceptCount="100"   
          />   



    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    8

    主题

    0

    听众

    252

    金钱

    三袋弟子

    该用户从未签到

    沙发
    发表于 2016-07-15 15:42:23 |只看该作者
    受教了!这个论坛果然很不错,适合学习!
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表