暂无菜单项

压力测试模板

发布于 更新于
16,776

暂无数据

XXX系统性能压测报告

  • 压测时间:2022-07-14
  • 压测说明:本次压力测试主要是为了找出系统瓶颈

压测对象

XXX系统

环境

版本信息

类别 说明
服务器 192.168.1.1
数据库 MYSQL-8.0.21
服务容器 TOMCAT-9.0.63
Redis 6.2.6
RabbitMQ 3.9.14
JDK openjdk version “1.8.0-262” (build 1.8.0-262-b10) 64-Bit

硬件信息

类别 说明
服务器CPU Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz 12核心24线程
硬盘 Lenovo SSD SL700,型号LSL70240B0CFF03998,240GB
内存 64GB,Free=6.6GB,Used=41.7GB
交换区 15GB

服务调用链路

链路 是否命中DB 理论DB次数 缓存生效后DB命中次数 性能/评估
A -> redis – – – –
A -> redis -> B -> mysql yes 1 – –
A -> C -> B,mysql yes 3 3 根据设备数量指数影响
A -> redis -> G yes 1 – –
A -> redis -> S yes 3 – 缓存更新不及时
A -> redis -> B yes 少数 少数 较少影响

调优参数

Tomcat

类别 参数 值
Tomcat 等待队列长度 2000
Tomcat 最大线程 800
Tomcat 最小线程 100

Hikari

类别 参数 值
Hikari 连接 30s
Hikari 超时 30s
Hikari 线程 30
Hikari 连接时长 1765000ms

Jedis-Pool

类别 参数 值
jedis-pool max-active 100
jedis-pool max-wait 5000
jedis-pool max-idle 5
jedis-pool min-idle 1

Hystrix

类别 参数 值
Hystrix 策略 信号量
Hystrix 最大信号量 8000

Feign

类别 参数 值
Feign 懒加载 开启
Feign 熔断 开启
Feign 压缩算法 开启
Feign 默认连接时间 30000
Feign 默认超时时间 50000

Ribbon

类别 参数 值
Ribbon 最大重试次数 0
Ribbon 重试 关闭
Ribbon 请求连接时间 10000
Ribbon 超时时间 10000

服务内存分配

类别 参数
A 2GB
B 2.5GB
C 1.5GB
G 256MB
S 256MB

压测数据|服务器基准测试

  • 本次测试,对服务器进行基准测试,以基础服务的三个接口分别进行衡量
  • 测试工程:test-project
  • Git: https://gitlab
  • apache-jmeter-5.4.1
  • Linux version 3.10.0-957.el7.x86_64 version 4.8.5 20150623 (Red Hat 4.8.5-36)

服务器标准压力测试

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大
/test/get http get 192.168.4.164:8081(nacos+common+kit+mysql+redis+stream) 500 7830236 88872.9/s 5 0 1011
/test/get http get 192.168.4.164:8081(nacos+common+kit+mysql+redis+stream) 500 11676855 83440.1/s 5 0 1016
/test/get http get 192.168.4.164:8081(nacos+common+kit+mysql+redis+stream) 500 93893364 84221.5/s 5 0 1054

Redis|set + get

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大
/test/redisGet http post 192.168.4.164 100 2784253 40935.3/s 2 0 942
/test/redisGet http post 192.168.4.164 500 757883 10451.1/s 47 0 1227
/test/redisGet http post 192.168.4.164 1000 300363 3241.0/s 308 1 1931

MYSQL写入1次DB

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大
/test/dbWrite http post 192.168.4.164 100 195939 3826.3/s 25 4 1281
/test/dbWrite http post 192.168.4.164 500 267124 3253.9/s 151 5 1084
/test/dbWrite http post 192.168.4.164 1000 91968 1255.9/s 788 5 3145

MYSQL查询1次DB

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大
/test/dbGet http post 192.168.4.164 100 774145 12785.9/s 7 0 468
/test/dbGet http post 192.168.4.164 500 542922 5130.9/s 97 1 2966
/test/dbGet http post 192.168.4.164 1000 149840 1500.1/s 657 1 11066

压测数据|本次主要对象

  • 测试工程:test-project
  • apache-jmeter-5.4.1
  • Linux version 3.10.0-957.el7.x86_64 version 4.8.5 20150623 (Red Hat 4.8.5-36)

登录接口

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大 错误率
/token/user/login http post 192.168.4.164 100 11019 80.5/s 1225 394 7586 0.15%
/token/user/login http post 192.168.4.164 500 10241 82.1/s 5857 476 15020 2.79%
/token/user/login http post 192.168.4.164 1000 10405 85.0/s 11059 299 15382 44.15%

验证码接口

接口 协议 方法 主机 线程数 总样本 吞吐量 响应时间-均值 响应时间-最小 响应时间-最大 错误率
/token/user/check http post 192.168.4.164 100 27220 242.7/s 406 80 1097 0%
/token/user/check http post 192.168.4.164 500 10241 225.8/ 2180 220 8964 0%
/token/user/check http post 192.168.4.164 1000 22882 155.9/s 6231 54 15364 10.91%

建议与优化

影响因子

  • Redis:
    max-idle阈值为120-360较为合理
    max-idle数量越大,占用内存越高
    max-idle参数增大,吞吐量变高,但过大的配置,吞吐量适得其反
    默认服务256M较难支持360个idle及以上配置(360个idle大约500M)
  • AOP组件
    影响约10%左右的吞吐量
  • 组件@SpringBootApplication(scanBasePackages = “com.test”)
    影响严重,40%-70%不等
  • 接口返回值
    返回值数据量越大,性能指数下降
  • 接口请求参数
    较为合理范围内的数据量会有略微的影响
  • HTTP与HTTPS
    服务链路全采用HTTPS会有一定的性能影响,https的ECC比RSA更快