压力测试模板

更新于
5,016

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更快
我的会员
加入会员后,您将获得更多权益!
0 点赞
0 收藏
分享
0 讨论
反馈