精华内容
下载资源
问答
  • Tomcat并发能力

    2020-09-25 14:08:38
    一、一些限制 Windows 每个进程中的线程数不允许超过 2000 ... 还需要考虑数据库读写的并发能力 二、Tomcat Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了, Tomcat的最大并发数是可以

    一、一些限制

    • Windows 每个进程中的线程数不允许超过 2000
    • Linux 每个进程中的线程数不允许超过 1000
    • 在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。 (并发量上来后 可能需要修改JVM参数调优)
    • 建议当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
    • 还需要考虑数据库读写的并发能力

    二、Tomcat

    Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了, Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。

    Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制,但对于 Tomcat 来说几乎没有 BUG 存在了。

    Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。

    这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能要求也是非常高的。 对于单台数据库服务器来说,允许客户端的连接数量是有限制的。

    三、一些参数

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

    原文:https://www.cnblogs.com/lcword/archive/2004/01/13/11798092.html

    展开全文
  • Tomcat并发处理能力

    2020-02-04 14:07:47
    Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。 当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU越多性能越高...

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

            当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。
    具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。


    操作系统对于进程中的线程数有一定的限制:
    Windows 每个进程中的线程数不允许超过 2000
    Linux 每个进程中的线程数不允许超过 1000
    另外,在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。

    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
    Tomcat 默认的 HTTP 实现是采用阻塞式的 Socket 通信,每个请求都需要创建一个线程处理。这种模式下的并发量受到线程数的限制,但对于 Tomcat 来说几乎没有 BUG 存在了。
    Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。


    这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂需要大量的计算,那并发能力势必会下降。如果每个请求都含有很多的数据库操作,那么对于数据库的性能也是非常高的。
    对于单台数据库服务器来说,允许客户端的连接数量是有限制的。
    并发能力问题涉及整个系统架构和业务逻辑。
    系统环境不同,Tomcat版本不同、JDK版本不同、以及修改的设定参数不同。并发量的差异还是满大的。
    maxThreads="1000" 最大并发数 
    minSpareThreads="100"///初始化时创建的线程数
    maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
    acceptCount="700"// 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

    展开全文
  • TOMCAT优化,提高并发能力

    千次阅读 2018-01-12 11:22:41
    很多时候,明明自己的服务器配置很高,可是在高并发时的性能并不好,这个时候就要考虑是不是TOMCAT服务器的 性能限制了并发,如果你还在烦恼服务器的性能低下,时不时的报连接失败connection refused。那就请往下看...

    很多时候,明明自己的服务器配置很高,可是在高并发时的性能并不好,这个时候就要考虑是不是TOMCAT服务器的

    性能限制了并发,如果你还在烦恼服务器的性能低下,时不时的报连接失败connection refused。那就请往下看,客官您请:

    .tomcat的server.xml的默认最大连接数是200,即maxThreads="200",请求等待连接数为100,即acceptCount="100"。

    这两个值如何起作用,请看下面三种情况

    情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。

    情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。

    情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused

    一般的服务器操作都包括量方面:1计算(主要消耗cpu),2等待(io、数据库等)

    第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。

    第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内存设置和linux的open file限制。

    1.1 . 首先我们将tomcat的线程池打开:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
            maxThreads="500" minSpareThreads="250"/>将这串代码取消注释,一般网站的单台服务器并发线程最好控制在500左右,通过负载均衡去缓解单台服务器压力,所以不需要设太高,当然自己测试的你可以设置1000,来提高性能。


    在如图添加executor="tomcatThreadPool"来启用线程池。acceptCount就设为默认值,想要更高并发的可以将acceptCount设为和maxThreads设为相同值。

    2.  可能有的同学看到我的图还在疑问,图中的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类型修改为:

    Java代码   收藏代码
    1. //NIO  
    2. protocol="org.apache.coyote.http11.Http11NioProtocol"  
    3. //NIO2  
    4. protocol="org.apache.coyote.http11.Http11Nio2Protocol"  

            即可。

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

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

    Java代码   收藏代码
    1. protocol="org.apache.coyote.http11.Http11AprProtocol"
    2. 注意:APR需要自己安装。

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

    3.<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->将AJP注释了,

     

    4.在tomcat中设置JVM参数

      修改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】

    5. 当你对项目进行压测时最好将响应时间控制在5秒以下,根据这个来设置tomcat的最大连接数。

    展开全文
  • 最近做性能优化,tomcat并发量到6000/s后实在上不去了,有什么办法可以提升吗? 1、程序处理时间在0-2ms 2、tomcat配置: JAVA_OPTS="-server -Xms2048M -Xmx2048M -Xmn1024M -Xss512k -XX:+AggressiveOpts -XX:+...
  • Tomcat 并发数1200 nginx反向代理并发数 2w 官网是5w mysql并发数 200w #注释:如果有错误请告知

    Tomcat 并发数1200
    nginx反向代理并发数 2w 官网是5w
    mysql并发数 200w

    #注释:如果有错误请告知

    展开全文
  • 说实话,这个问题困扰我很多年,无奈公司团队当中也无人能为我解答这个问题,言归正传,自己曾...然后通过jmeter进行压测,发现当并发请求数达到四五千的时候tomcat就支撑不住了,难道一台机器只能支撑四五千的并发量?
  • 1、Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。  2、压力过大的问题,可以做负载均衡,一个TOMCAT无论如何也...
  • tomcat 并发数量

    2018-03-05 09:54:00
    Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞式的,每个请求也不需要创建一个线程进行处理,并发能力比前者高。但没有阻塞式的成熟。 这个并发能力还与应用的逻辑密切相关,如果逻辑很复杂...
  • 提高tomcat并发能力

    2014-09-02 16:53:48
    tomcat并发能力  文章分类:Java编程  1、Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。  2、压力过大的...
  • 转载 :tomcat并发能力

    2012-08-23 18:34:50
    tomcat并发能力 文章分类:Java编程 1、Apache + Tomcat 结合起来用Apache 负责静态页面,Tomcat负责动态页面,同时减少connectionTimeout的时间,以应对并发量大线程回收来不及的情况。 2、压力过大的问题,可以做...
  • Tomcat的性能与并发

    2018-12-07 16:04:15
    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发Tomcat 还可以配置 NIO 方式的 Socket 通信,在性能上高于阻塞...
  • tomcat并发数设置

    2017-10-31 12:16:00
    tomcat并发设置 maxThreads="1000" minProcessors="100" maxProcessors="1000" minSpareThreads="100" maxSpareThreads="1000" enableLookups="false" URIEncoding="utf-8" acceptCount="1000" ...
  • Tomcat并发数配置

    万次阅读 2016-12-29 15:30:30
    配合做压力测试的时候,有...可能原因是tomcat并发下连接数设置问题,或者没有设置,采用默认的。 解决方法增加tomcat连接数  在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:  minProcessor
  • Tomcat并发设置

    千次阅读 2019-05-23 19:04:40
    Tomcat并发配置解决方法 增加tomcat连接数 在配合做压力测试的时候,有时候提高并发数的时候 莫名的出现服务器卡顿现象,服务器拒绝连接,前端出现502 Bad Gateway等错误信息,而后端服务器日志确没有错误提示。 ...
  • Tomcat支持多少并发

    千次阅读 2019-07-01 09:49:48
    Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发Tomcat默认的HTTP实现是采用阻塞式的Socket通信,每个请求都...
  • 一个tomcat支持多少并发

    千次阅读 2019-12-30 11:41:47
    Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。 当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU越多性能越高,...
  • 4 Tomcat并发优化

    2019-05-05 22:58:03
    Tomcat并发优化 (1) tomcat并发参数 maxThreads:最大的并发请求数,当cpu利用率高的时候,不宜增加线程的个数,当cpu利用率不高,大部分是io阻塞类的操作时,可以适当增加该值。 maxSpareThreads:Tomcat连接器的...
  • tomcat并发调优

    2018-08-29 14:21:32
    1.场景还原  近期笔者在线上项目中遇到了...②对tomcat并发调优,此前笔者nginx+tomcat负载均衡调优已经实现,今天就tomcat并发调优作个分享 2.实现方案 ①编辑tomcat/conf/server.xml 将默认配置 &lt;...
  • tomcat配置文件server.xml中的<Connector … />配置中,和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessors:最大连接线程数,即:并发处理的最大...
  • Tomcat修改最大并发

    千次阅读 2019-07-11 10:50:53
    几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------------------------------------------- 在tomcat配置文件server.xml中的<Connector ... ...
  • Tomcat并发配置 Nginx实现负载均衡 动静分离 redis实现session共享 Tomcat并发配置 Tomcat 默认配置的最大请求数是 150,可以将其改大。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给...
  • Tomcat参数调优:连接数和并发数连接数实战并发处理线程数 调整实战 配置项 含义 默认 建议 注意 备注 ConnectionTimeout 连接超时 20s 减少 与程序处理能力有关,处理能力越快设置短一点没关系 到底多久提示...
  • 一、Tomcat是什么? Tomcat是一个web应用服务器,是一个Servlet/Jsp容器,主要负责将客户端请求传递给对应的Servlet,并且将Servlet的响应数据返回给客户端。 Tomcat是基于组件的服务器。 二、Tomcat体系结构 Tomcat...
  • tomcat并发线程数设置

    万次阅读 2017-03-03 10:03:50
    tomcat 线程数 设置
  • tomcat

    千次阅读 2019-08-30 13:47:17
    tomcat 文章目录tomcat1. tomcat简介2. tomcat项目部署2.1 java环境安装2.2 tomcat部署2.3 开启管理模块 1. tomcat简介 Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,...
  • Tomcat的性能与最大并发配置

    万次阅读 2018-06-12 23:17:05
    Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多...
  • tomcat并发

    2017-02-14 15:31:35
    Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。具体能承载多少并发,需要看硬件的配置,CPU 越...
  • Tomcat的最大并发配置

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

    2018-05-02 22:24:37
    tomcat配置文件server.xml中的配置中,和连接数相关的参数有: maxThreads: Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值150。 acceptCount:指定当所有可以使用的处理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,087
精华内容 15,234
关键字:

tomcat并发能力