精华内容
下载资源
问答
  • tomcat并发配置及调优

    千次阅读 2018-07-24 16:41:18
    一、高并发配置 1. 修改tomcat/conf/server.xml配置文件,默认情况下Excutor是被注释的,本文只是参考配置,需要根据项目的访问量大小来进行适当的修改,配置参数如下: <Executor name="...

    一、高并发配置

    1. 修改tomcat/conf/server.xml配置文件,默认情况下Excutor是被注释的,本文只是参考配置,需要根据项目的访问量大小来进行适当的修改,配置参数如下:

    <Executor name="tomcatThreadPool"        # 配置TOMCAT共享线程池,NAME为名称 
              namePrefix="HTTP-8088-exec-"    # 线程的名字前缀,用于标记线程名称
              prestartminSpareThreads="true"  # executor启动时,是否开启最小的线程数
              maxThreads="5000"               # 允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,这里设置可以支持到5000并发
              maxQueueSize="100"              # 任务队列上限
              minSpareThreads="50"            # 最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源
              maxIdleTime="10000"             # 超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。
     />
    
    <Connector port="8088" protocol="org.apache.coyote.http11.Http11NioProtocol"
       connectionTimeout="5000" redirectPort="443" proxyPort="443" executor="tomcatThreadPool"  # 采用上面的共享线程池
       URIEncoding="UTF-8"/>
    

    2.protocol协议更改

    上面Connetor标签下的protocol为什么不是HTTP/1.1?

    protocol:协议类型,可选类型有四种,分别为BIO(阻塞型IO),NIO,NIO2和APR。

            (1)BIO:BIO(Blocking I/O),顾名思义,即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包)。Tomcat在默认情况下,是以bio模式运行的。遗憾的是,就一般而言,bio模式是三种运行模式中性能最低的一种。BIO配置采用默认即可。

            (2)NIO:NIO(New I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行也比较简单,我们只需要protocol类型修改为:

    //NIO  
    protocol="org.apache.coyote.http11.Http11NioProtocol"  
    //NIO2  
    protocol="org.apache.coyote.http11.Http11Nio2Protocol"  

            即可。

            (3)APR:APR(Apache Portable Runtime/Apache可移植运行时),是Apache HTTP服务器的支持库。你可以简单地理解为:Tomcat将以JNI的形式调用 Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高 Tomcat对静态文件的处理性能。 

            与配置 NIO运行模式一样,也需要将对应的 Connector节点的 protocol属性值改为:

    protocol="org.apache.coyote.http11.Http11AprProtocol"
    注意:APR需要自己安装。

    因此改为NIO或者APR,可以提高并发性能。

     

    二、调优

    主要是针对jvm内存的配置

    Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同堆内存分配 (访问量比较大时设为一致)

    JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、 -Xmx相等以避免在每次GC 后调整堆的大小。 

    非堆内存分配 
    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 
    JVM内存限制(最大值) 
    首先JVM内存限制于实际的最大物理内存(废话!呵呵),假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位 处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G- 2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。(使用java命令测试出支持的最大值)

    修改bin/catalina.bat文件设置参数

    set JAVA_OPTS=-Dfile.encoding=UTF-8 
      -server 
      -Xms1024m 
      -Xmx2048m 
      -XX:NewSize=512m 
      -XX:MaxNewSize=1024m 
      -XX:PermSize=256m 
      -XX:MaxPerPermSize=356m 
      -XX:NewRatio=2 
      -XX:MaxTenuringThreshold=50 
      -XX:+DisableExplicitGC

    -Xms:设置JVM初始内存大小(默认是物理内存的1/64)

       -Xmx:设置JVM可以使用的最大内存(默认是物理内存的1/4,建议:物理内存80%)

       -Xmn:设置JVM最小内存(128-256m就够了,一般不设置)

       默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、

    -Xmx相等以避免在每次GC 后调整堆的大小。  

       在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError:Java heap space”,从而

    导致客户端显示500错误。  

      -XX:PermSize :为JVM启动时Perm的内存大小  

      -XX:MaxPermSize :为最大可占用的Perm内存大小(默认为32M) 

      -XX:MaxNewSize,默认为16M


      PermGen space的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到

    PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(GarbageCollection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的

    话,就很可能出现“java.lang.OutOfMemoryError:PermGen space”错误。

    对于WEB项目,jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小,为了避免调整),你可以使用更多的参数配置。如果你的WEBAPP下都用了大量的第三

    方jar, 其大小超过了jvm默认的大小,那么就会产生此错误信息了。


    其它参数:

      -XX:NewSize :默认为2M,此值设大可调大新对象区,减少FullGC次数

      -XX:NewRatio :改变新旧空间的比例,意思是新空间的尺寸是旧空间的1/8(默认为8)

      -XX:SurvivorRatio :改变Eden对象空间和残存空间的尺寸比例,意思是Eden对象空间的尺寸比残存空间大survivorRatio+2倍(缺省值是10)

      -XX:userParNewGC 可用来设置并行收集【多CPU】

      -XX:ParallelGCThreads 可用来增加并行度【多CPU】

      -XXUseParallelGC 设置后可以使用并行清除收集器【多CPU】

    详细配置可参看这篇几篇文章:

    https://www.cnblogs.com/jianyungsun/p/6911380.html

    https://www.cnblogs.com/qmfsun/p/5396710.html

    有兴趣的朋友可以关注下本人的微信公众号:“JAVA菜鸟程序猿”

    展开全文
  • tomcat并发配置调优

    万次阅读 2017-05-18 21:31:41
    最近部署的tomcat,里面放了一个apk提供给测试人员测试,二有一天压测的时候,他们一致反馈下载不了,结果查看日志才发现如下错误: ...才惊醒这个tomcat根本知识解压就使用的,配置都没动过,肯定不能支持高并发

    最近部署的tomcat,里面放了一个apk提供给测试人员测试,而有一天压测的时候,他们一致反馈下载不了,结果查看日志才发现如下错误:

    INFO: Maximum number of threads (200) created for connector with address null and port 8091

    才惊醒这个tomcat根本知识解压就使用的,配置都没动过,肯定不能支持高并发了。所以这里给出一个高并发的配置,当然百度一下也会发现很多类似的配置文章,其他的就不去管吧,反正这歌配置是本人亲测,特别是压力测试下是没问题的;

    <Executor name="tomcatThreadPool"        # 配置TOMCAT共享线程池,NAME为名称 
              namePrefix="HTTP-8088-exec-"    # 线程的名字前缀,用于标记线程名称
              prestartminSpareThreads="true"  # executor启动时,是否开启最小的线程数
              maxThreads="5000"               # 允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,这里设置可以支持到5000并发
              maxQueueSize="100"              # 任务队列上限
              minSpareThreads="50"            # 最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源
              maxIdleTime="10000"             # 超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。
     />
    <Connector port="8088" protocol="org.apache.coyote.http11.Http11NioProtocol"
       connectionTimeout="5000" redirectPort="443" proxyPort="443" executor="tomcatThreadPool"  # 采用上面的共享线程池
       URIEncoding="UTF-8"/>

    这里本人的最大线程数是5000,当然先上压测的时候并发4000是完全没压力的,当时服务器的资源20%都没用到,所以这一个配置完全足够实现5000高并发。

    展开全文
  • Tomcat并发配置调优

    2018-11-28 23:13:03
    # 配置TOMCAT共享线程池,NAME为名称  namePrefix=&quot;HTTP-8088-exec-&quot; # 线程的名字前缀,用于标记线程名称 prestartminSpareThreads=&quot;true&quot; # executor启动时,是否开启...

    tomcat目录/conf/server.xml

    <Executor name="tomcatThreadPool"        # 配置TOMCAT共享线程池,NAME为名称 
              namePrefix="HTTP-8088-exec-"    # 线程的名字前缀,用于标记线程名称
              prestartminSpareThreads="true"  # executor启动时,是否开启最小的线程数
              maxThreads="5000"               # 允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,这里设置可以支持到5000并发
              maxQueueSize="100"              # 任务队列上限
              minSpareThreads="50"            # 最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源
              maxIdleTime="10000"             # 超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。
    
     />
    <Connector port="8088" protocol="org.apache.coyote.http11.Http11NioProtocol"
       connectionTimeout="5000" redirectPort="443" proxyPort="443" executor="tomcatThreadPool"  # 采用上面的共享线程池
       URIEncoding="UTF-8"/>
    
    
    展开全文
  • tomcat 提高并发配置与优化

    千次阅读 2015-01-23 12:44:35
    tomcat6 高并发配置 与优化 转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html tomcat的server.xml配置文件说明: server.xml配置 1. port="8080"protocol="HTTP/1.1" 2. maxThreads="30000...
    

    tomcat6 高并发配置 与优化



    转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html


    tomcatserver.xml配置文件说明:


    server.xml
    配置

    1.  port="8080"protocol="HTTP/1.1"

    2.  maxThreads="30000"

    3.  minSpareThreads="512"

    4.  maxSpareThreads="2048"

    5.  enableLookups="false"

    6.  redirectPort="8443"

    7.  acceptCount="35000"

    8.  debug="0"

    9.  connectionTimeout="40000"

    10. disableUploadTimeout="true"

    11. URIEncoding="UTF-8"/>

    参数说明:
    connectionTimeout
    网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
    keepAliveTimeout
    长连接最大保持时间(毫秒)。此处为15秒。
    maxKeepAliveRequests
    最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
    maxHttpHeaderSize
    http
     请求头信息的最大程度,超过此长度的部分不予处理。一般8K
    URIEncoding
    指定Tomcat 容器的URL 编码格式。
    acceptCount
    指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10个。
    disableUploadTimeout
    上传时是否使用超时机制
    enableLookups
    是否反查域名,取值为:true false。为了提高处理能力,应设置为false
    maxSpareThreads
    最大空闲连接数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket线程The default value is 50.
    maxThreads
    最多同时处理的连接数,Tomcat 使用线程来处理接收的每个请求。这个值表示Tomcat 可创建的最大的线程数。
    minSpareThreads
    最小空闲线程数,Tomcat 初始化时创建的线程数.
    minProcessors
    最小空闲连接线程数,用于提高系统处理性能,默认值为10
    maxProcessors
    最大连接线程数,即:并发处理的最大请求数,默认值为75


    提高Tomcat的并发能力一些方法
    1
    Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。
    2
    、压力过大的问题,可以做负载均衡,一个TOMCAT无论如何也不可能担当如此多的线程负载,而且JVM过大,其内存管理成本将显著加大。2G的内存,做3-4TOMCAT实例(512RAM*4),更为科学合理。
    3
    、数据库连接池,不少人,都推荐使用C3P0,能提高访问数据库的并发性能好几倍。(有博文称使用tomcat自带的jdbc-pool更好,还没试过)
    4
    、采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat,也可以在多台服务器上分别部署 TomcatApacheTomcat整合的方式还是JK方式。经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群> Apache+2Tomcat集群> Apache集成Tomcat >单个Tomcat。并且采用Apache+Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。
    5.
     打开KeepAlive支持
    KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
    根据实际经验,通过ApacheTomcat集群的方式提高系统性能的效果十分明显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单Tomcat时的压力。
    web server
    允许的最大连接数还受制于操作系统的内核参数设置,通常Windows2000个左右,Linux1000个左右。


    其中和最大连接数相关的参数为maxProcessors和acceptCount。如果要加大并发连接数,应同时加大这两个参数。


    web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。Unix中如何设置这些参数,请参阅Unix常用监控和管理命令


    tomcat4中的配置示例:
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8080" minProcessors="10" maxProcessors="1024"
    enableLookups="false" redirectPort="8443"
    acceptCount="1024" debug="0" connectionTimeout="30000" />

    对于其他端口的侦听配置,以此类推。

    2. 如何加大tomcat可以使用的内存
    tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

    Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:
    JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
    需要把这个两个参数值调大。例如:
    JAVA_OPTS='-Xms256m -Xmx512m'
    表示初始化内存为256MB,可以使用的最大内存为512MB


    并发1000配置实例

    ?

    环境配置如下:

    windows 2003 企业版 sp2

    Intel(R) Xeon(R) 4 CPU 5130 @ 2.0GHz 4.00GB 内存

    apache_2.2.8-win32-x86

    mod_jk-apache-2.0.59

    jdk-1_5_0_14-windows-i586-p.exe -client

    Tomcat-6.0.16 + apr


    server.xml
    Xml代码
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="2000" minSpareThreads="1000"/> 


    catalina.bat
    Java代码
    set JAVA_OPTS=-Xms1400m -Xmx1400m -Djava.awt.headless=true

    ?

    HTTPD.CONF代码:

    1. <Connector port="8080" maxHttpHeaderSize="8192" useBodyEncodingForURI="true"
    2.   maxThreads="1000" minSpareThreads="25" maxSpareThreads="75"
    3.   enableLookups="false" redirectPort="8443" acceptCount="100"
    4.   compression="on" compressionMinSize="2048"
    5.  compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
    6.   connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>




    转自:http://blog.sina.com.cn/s/blog_4b5bc01101014s81.html

    
    展开全文
  • 公司的一个服务器使用Tomcat6默认配置,在后台一阵全点击服务器就报废了,查了一下就要是PERMSIZE默认值过小造成(16-64)TOMCAT_HOME/bin/catalina.sh添加一行:JAVA_OPTS=” -XX:PermSize=64M -XX:MaxPermSize=128...
  • tomcat并发配置

    千次阅读 2013-10-05 22:43:39
    之前在做tomcat的最大并发量测试,现总结如下: tomcat默认的连接是线程阻塞的,即protocol配置为"HTTP/1.1"。那么tomcat的最大连接数就受maxThreads和account的限制, maxThreads是最大的线程数,account是...
  • tomcat配置文件server.xml中的<Connector … />配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大...
  • Tomcat并发设置

    千次阅读 2019-05-23 19:04:40
    Tomcat高并发配置解决方法 增加tomcat连接数 在配合做压力测试的时候,有时候提高并发数的时候 莫名的出现服务器卡顿现象,服务器拒绝连接,前端出现502 Bad ...在tomcat配置文件server.xml中的配置中,和连接数...
  • Tomcat并发配置 Nginx实现负载均衡 动静分离 redis实现session共享 Tomcat并发配置 Tomcat 默认配置的最大请求数是 150,可以将其改大。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给...
  • Tomcat并发配置

    千次阅读 2011-10-27 09:49:47
    java 环境配置: export JAVA_OPTS="-server -Xms8g -Xmx8g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:...
  • 经验证的tomcat并发和集群配置的server.xml,在生产上已经使用的。不过需要注意context.xml中需要这样子配置: <Context distributable="true" useHttpOnly="false">
  • Tomcat并发配置

    千次阅读 2016-12-29 15:30:30
    配合做压力测试的时候,有时候提高并发数的时候 莫名的出现服务器卡顿现象,服务器拒绝连接,前端出现502 Bad Gateway等错误信息,而...在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:  minProcessor
  • Nginx 配置之后在电脑上的并发访问量比直接使用tomcat并发访问量低是什么原因??怎样解决??
  • Tomcat并发能力

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

    2015-07-14 09:25:40
    tomcat并发 1000每秒 服务器优化 高性能 tomcat并发 1000每秒 服务器优化 高性能
  • tomcat 启动优化和并发并发优化配置
  • springboot tomcat并发优化

    千次阅读 2020-10-10 09:49:21
    通过Tomcat配置改善SpringBoot项目并发线程数
  • tomcat8.5配置并发

    2019-02-21 19:21:00
    最近部署的tomcat应用,有一天压测的时候,测试一致反馈下载不了,结果查看日志才发现如下错误: ...才惊醒这个tomcat根本知识解压就使用的,配置都没动过,肯定不能支持高并发了。所以这里给出一个高并发配置...
  • tomcat7 1000并发配置 tomcat7配置优化

    千次阅读 2016-04-17 22:13:00
    修改tomcat/conf/server.xml配置文件。  maxThreads="500" minSpareThreads="400" />       port="80" protocol="HTTP/1.1"   connectionTimeout="20000" enableLookups="false"   r
  • Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多...
  • tomcat的高并发配置

    2018-09-04 14:05:07
    tomcat的高并发配置分享 解决方法: 在tomcat的server.xml配置文件设置端口的Connector标签如下(红色部分是关键配置): http://www.yayihouse.com/yayishuwu/chapter/1561...
  • 今天云平台上的设备中心服务器由于几百台机器同时下发人员,瞬间卡爆,几分钟才响应;...Tomcat的高并发配置调优 在Tomcat配置文件server.xml中添加如下,即可解决高并发问题 <Executor name="tomcatThreadPool
  • Tomcat的最大并发配置

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

    2018-08-01 15:14:28
    1、tomcat JVM优化 详见JVM优化  http://blog.csdn.net/sinlff/article/details/62038816 2、tomcat线程池 TOMCAT_HOME/conf/server.xml name:线程池名称,用于 Connector中指定。 namePrefix:所创建的每个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,598
精华内容 29,039
关键字:

tomcat配置并发