TOMCAT可以稳定支持的最大并发用户数

本文通过LoadRunner对Tomcat服务器进行并发压力测试,结果显示,在250个并发用户时性能最佳,超过300个并发用户后响应时间和连接丢失明显增加。

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

服务器配置:

 

单硬盘,SATA   8MB缓存

测试服务器和loadrunner运行服务器位于同一网段--100MB网络(同一交换机)上,排除网络问题的影响

服务器运行始终,CPU使用率非常低没有超过5% 因此虽然服务器配置低,但是不是性能瓶颈所在

服务器运行在windows server 2003 sp2中文版(正版系统)

tomcat内存的设置:1.4GBJVM+256MB的池

set JAVA_HOME=C:\JAVA\JDK15
set CATALINA_OPTS=-server -Xms 1400m -Xmx1400m -XX:PermSize=256m -XX:MaxPermSize=256m

tomcat线程的设置:初始产生1000线程数最大支持2000线程

<Connector port="80" maxHttpHeaderSize="8192"
               maxThreads="4000" minSpareThreads="1000" maxSpareThreads="2000"
               enableLookups="false" redirectPort="8443" acceptCount="2000"
               connectionTimeout="20000" disableUploadTimeout="true" />

需要显示的JSP页面:index.jsp

==========================================================
<html>
<body>
test---tomcat
<%
   System.out.println("===========================");
    System.out.println("===========================");
System.out.println("===========================");
   System.out.println("===========================");
    System.out.println("===========================");     %>

</body>
</html>

=============================================================

类似于静态页面,以此来判断tomcat支持的最大的并发用户数量

使用loadrunner设置1000并发用户数进行压力测试。每两秒钟增加一个用户,以此递增,直至1000后,然后再按照两秒钟一个用户递减直至用户数位0.

测试结果:

Transaction Response Time Under Load

1可以看到在达到600用户同时在线的时候,系统响应时间为6秒钟

100人-----响应时间0.8秒   完美

150人-----响应时间1秒      完美

200人-----响应时间1.5秒    响应时间有微小波动 比较完美

250-----响应时间1.8秒    比较完美(此时是理想情况下最大的并发用户数量)

280-----开始出现连接丢失问题,连接开始不稳定

300人-----响应时间3秒      响应时间有较大波动峰值为6秒   较差

350人-----响应时间3秒      开始大量出现连接丢失问题 连接很不稳定

400人-----响应时间3.8秒    连接丢失数量达到3000次以上

450人-----响应时间4秒      连接丢失数量达到6000次以上

500人-----响应时间4秒      连接丢失数量达到11000次以上

550人-----响应时间6秒      连接丢失数量达到21000次以上

600人-----响应时间6秒      连接丢失数量达到25000次以上

600人开始系统出现异常情况,因此停止测试。测试数据到此为止。

每秒的点击次数:

 TOMCAT可以稳定支持的最大并发用户数





 

虚拟用户递增情况:

TOMCAT可以稳定支持的最大并发用户数

 

 

 

测试过程中成功和失败的响应结果:

TOMCAT可以稳定支持的最大并发用户数

### Spring Boot最大用户并发数及性能调优 Spring Boot 的最大用户并发数取决于多个因素,包括硬件资源(CPU、内存等)、JVM 配置、应用程序逻辑的复杂度以及服务器配置等。通常情况下,可以通过调整线程池配置和 JVM 参数来优化系统的并发处理能力[^1]。 #### 线程池调优 Spring Boot 默认使用 Tomcat 作为内嵌服务器,其线程池配置直接影响并发处理能力。通过调整 `application.yml` 中的参数可以优化线程池性能[^2]: ```yaml server: tomcat: max-threads: 500 # 最大线程数,建议根据 CPU 核心数和任务类型设置 min-spare-threads: 50 # 最小空闲线程数,确保突发流量时快速响应 accept-count: 200 # 请求队列长度,超出部分将被拒绝 connection-timeout: 10000ms # 连接超时时间 ``` 对于 IO 密集型任务,推荐将 `max-threads` 设置为 CPU 核心数的 2 倍;而对于计算密集型任务,则应尽量接近 CPU 核心数。 #### JVM 参数调优 JVM 默认设置可能无法满足高并发场景的需求,因此需要根据实际情况进行调整。以下是一些常用的 JVM 参数[^3]: - `-Xms` 和 `-Xmx`:设置 JVM 的最小和最大堆内存大小,建议将两者设为相同值以避免动态扩展。 - `-XX:NewRatio`:设置新生代与老年代的比例,推荐值为 1 或 2。 - `-XX:+UseG1GC`:启用 G1 垃圾回收器,适合高并发场景。 - `-XX:ParallelGCThreads`:设置并行垃圾回收线程数,推荐值为 CPU 核心数的一半。 示例 JVM 参数配置: ```bash java -Xms4g -Xmx4g -XX:NewRatio=1 -XX:+UseG1GC -XX:ParallelGCThreads=8 -jar app.jar ``` #### 性能限制 尽管可以通过上述方法提升 Spring Boot 的并发处理能力,但仍然存在一些性能限制: 1. **硬件资源瓶颈**:当 CPU、内存或网络带宽达到上限时,系统性能会受到显著影响[^1]。 2. **数据库连接池限制**:如果数据库连接池配置不合理,可能会成为性能瓶颈。可以通过调整 `spring.datasource.hikari.maximum-pool-size` 来优化[^4]。 3. **应用逻辑复杂度**:复杂的业务逻辑会导致更高的延迟和更低的吞吐量。建议将耗时操作异步化或引入缓存机制。 #### 自动配置调试 为了更好地理解 Spring Boot 的自动配置对性能的影响,可以启用调试模式查看已启用和未启用的自动配置报告[^5]: ```properties debug=true ``` 或者在运行 jar 文件时添加 `--debug` 参数: ```bash java -jar app.jar --debug ``` ### 示例代码 以下是一个简单的异步处理示例,通过 `@Async` 注解将耗时操作放入独立线程中执行,从而提高系统的并发能力: ```java import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @Service public class AsyncService { @Async public void performTask() { // 模拟耗时操作 try { Thread.sleep(5000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } } ``` 同时需要在主类或配置类上启用异步支持: ```java import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableAsync public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值