压力测试模板

该文档为简单通用的压力测试模板,更快速,更高效的进行文档撰写

XXX系统性能压测报告

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

压测对象

XXX系统

环境

版本信息

类别说明
服务器192.168.1.1
数据库MYSQL-8.0.21
服务容器TOMCAT-9.0.63
Redis6.2.6
RabbitMQ3.9.14
JDKopenjdk version “1.8.0-262” (build 1.8.0-262-b10) 64-Bit

硬件信息

类别说明
服务器CPUIntel(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 -> mysqlyes1
A -> C -> B,mysqlyes33根据设备数量指数影响
A -> redis -> Gyes1
A -> redis -> Syes3缓存更新不及时
A -> redis -> Byes少数少数较少影响

调优参数

Tomcat

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

Hikari

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

Jedis-Pool

类别参数
jedis-poolmax-active100
jedis-poolmax-wait5000
jedis-poolmax-idle5
jedis-poolmin-idle1

Hystrix

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

Feign

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

Ribbon

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

服务内存分配

类别参数
A2GB
B2.5GB
C1.5GB
G256MB
S256MB

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

  • 本次测试,对服务器进行基准测试,以基础服务的三个接口分别进行衡量
  • 测试工程: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/gethttpget192.168.4.164:8081(nacos+common+kit+mysql+redis+stream)500783023688872.9/s501011
/test/gethttpget192.168.4.164:8081(nacos+common+kit+mysql+redis+stream)5001167685583440.1/s501016
/test/gethttpget192.168.4.164:8081(nacos+common+kit+mysql+redis+stream)5009389336484221.5/s501054

Redis|set + get

接口协议方法主机线程数总样本吞吐量响应时间-均值响应时间-最小响应时间-最大
/test/redisGethttppost192.168.4.164100278425340935.3/s20942
/test/redisGethttppost192.168.4.16450075788310451.1/s4701227
/test/redisGethttppost192.168.4.16410003003633241.0/s30811931

MYSQL写入1次DB

接口协议方法主机线程数总样本吞吐量响应时间-均值响应时间-最小响应时间-最大
/test/dbWritehttppost192.168.4.1641001959393826.3/s2541281
/test/dbWritehttppost192.168.4.1645002671243253.9/s15151084
/test/dbWritehttppost192.168.4.1641000919681255.9/s78853145

MYSQL查询1次DB

接口协议方法主机线程数总样本吞吐量响应时间-均值响应时间-最小响应时间-最大
/test/dbGethttppost192.168.4.16410077414512785.9/s70468
/test/dbGethttppost192.168.4.1645005429225130.9/s9712966
/test/dbGethttppost192.168.4.16410001498401500.1/s657111066

压测数据|本次主要对象

  • 测试工程: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/loginhttppost192.168.4.1641001101980.5/s122539475860.15%
/token/user/loginhttppost192.168.4.1645001024182.1/s5857476150202.79%
/token/user/loginhttppost192.168.4.16410001040585.0/s110592991538244.15%

验证码接口

接口协议方法主机线程数总样本吞吐量响应时间-均值响应时间-最小响应时间-最大错误率
/token/user/checkhttppost192.168.4.16410027220242.7/s4068010970%
/token/user/checkhttppost192.168.4.16450010241225.8/218022089640%
/token/user/checkhttppost192.168.4.164100022882155.9/s6231541536410.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更快
文章

MySQL表名作为变量批处理

2024-4-2 10:29:20

文章

MYSQL常用操作命令

2024-4-2 10:31:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索