快捷搜索: 王者荣耀 脱发

spring cloud 并发测试及参数调优

1、测试工具

1.1、Apache JMeter 5.1.1

Apache JMeter是Apache组织开发的基于Java的压力测试工具。

1.2、Java VisualVM 1.8

VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。

1.3、Spring cloud Hystrix-Dashboard

Hystrix Dashboard是Hystrix的仪表盘组件,主要用来实时监控Hystrix的各项指标信息,通过界面反馈的信息可以快速发现系统中存在的问题。

2、测试环境

2.1、Spring cloud 版本

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

2.2、Java 版本

2.3、maven 版本

2.4、mysql 版本

2.5、docker 版本

3、参数调整

3.1、Spring cloud zuul yml 参数调整(具体值参数值需要参考实际环境)

spring:
  application:
    name: zuul
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
    username: root
    password: 1156543
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
  redis:
    host: localhost
    port: 6379
    password: 1654
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka:8761/eureka/
    fetch-registry: true
    register-with-eureka: true
  instance:
    prefer-ip-address: true
server:
  tomcat:
    max-threads: 1000
    min-spare-threads: 64
    max-connections: 2000
zuul:
  host:
    connect-timeout-millis: 300000
    socket-timeout-millis: 300000
  sensitive-headers:
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 6000
management:
  endpoints:
    web:
      exposure:
        include: "*"
zuul.host.maxTotalConnections: 2000
zuul.host.maxPerRouteConnections: 20
zuul.semaphore.max-semaphores: 2000

4、测试结果

Spring cloud zuul 使用 Hystrix 默认执行方式 SEMAPHORE(信号量)

4.1、并发1000测试

tomcat设置 max-threads: 1000,同时并发请求1000次,zuul的线程数量接近1000,全部返回成功,没有出现异常

4.2、并发2000测试

同时并发请求2000次,有24.95%的请求被拒绝了。

经验分享 程序员 微信小程序 职场和发展