压测目的

一、在真实环境下检测LILISHOP系统性能,评估系统吞吐响应等各个参数;

二、预见系统负载,通过多场景,多节点压测反馈系统的性能瓶颈以及扩容方案

三、给予部署LILISHOP的人提供推荐配置。

压测步骤

1-注册用户验证码验证
2-发送手机验证码
3-注册用户
4-登录用户验证码验证
5-登录用户
6-请求商品1
7-商品1加入购物车
8-请求商品2
9-商品2立即购买
10-提交订单

压测机ECS

内容 配置
规格 ecs.c6a.large
系统 Alibaba Cloud Linux 3.2104 64位
压测工具 jmeter 5.4.3
CPU&内存 2核 4 GiB
节点数 2

服务ECS

服务器配置

内容 配置
规格 ecs.hfc7.xlarge
系统 CentOS 7.6 64位
CPU&内存 4核 8 GiB
节点数 13

环境服务 节点*1

部署服务 节点数量
common-api 1
consumer 1
Rocketmq 1

压测服务 节点*12(最多时)

部署服务 节点数量
buyer-api 12

其他服务

Mysql:

内容 配置
规格代码 rds.mysql.c1.large
核心&内存 8核 16GB
最大连接数 4000
最大IOPS 8000

Redis:

内容 配置
版本类型 社区版
版本号 Redis 5.0
架构类型 集群版
分片数 8
节点类型 双副本
实例规格 8G集群版(8分片)

Elasticsearch:

内容 配置
实例类型 通用商业版
数据节点 云盘型 2核4G
硬盘 20G
Elasticsearch版本 7.10

SLB:

内容 配置
规格代码 超强型slb.s3.large

Rocketmq:

ECS节点私有部署( docker-compose)

版本号 4.7.0

压测结果

报表

并发数 节点数 请求数量 吞吐量(每秒) 平均响应时间(毫秒) 报告
500 1 71330 235.65 2009.07 点击跳转
1000 2 138449 453.19 2080.1 点击跳转
2000 4 272988 892.53 2105.02 点击跳转
3000 6 407761 1327.48 2126.09 点击跳转
4000 8 546668 1787.37 2101.94 点击跳转
5000 10 684615 2215.63 2111.63 点击跳转
5000 12 820588 2649.9 1758.86 点击跳转
6000 12 824235 2653.49 2110.99 点击跳转
7000 12 833499 2675.02 2426.5 点击跳转
8000 12 833329 2664.21 2781.18 点击跳转
9000 12 840198 2675.97 3114.61 点击跳转
10000 12 842628 2656.32 3467.4 点击跳转

图表

image-20220117162023113

服务器状态

ECS服务器

ecs1

ecs2

ecs3

RDS数据库

rds1

rds2

rds3

REDIS

CPU使用率

内存使用率

已使用内存总量

出/入口流量

请求数

出/入口流量使用率

实例KEY

命中率

LBS负载均衡

流量

流量

连接数

连接数

数据包

数据包

新建连接数

新建连接数

QPS

QPS

订单极限压测

报表

并发数 节点数 请求数量 吞吐量(每秒) 平均响应时间(毫秒) 报告
5000 12 805461 4150.38 1118.41 点击跳转
10000 12 851877 4476.10 1547.67 点击跳转

图表

image-20220117175042646

压测结论

本次压测环境所选的mysql未达性能瓶颈。

本轮压测环节redis未达到性能瓶颈。

压测过程中,ECS服务器CPU处于400%(4核)的满载状态。根据线程查看后,没有阻塞线程,平均CPU使用率为3%左右,为nio普通线程。

平均每个节点会大约增加230-240的吞吐。

API平均响应时间在2秒以内。

响应最慢的请求为提交订单,涉及mysql事务、缓存、数据查询、数据插入 等较多工作。

5000并发时,尝试增加节点提高服务器响应速度,结果平均响应时间从2111.63提高到1758.86,效果显著,同时吞吐提升440。

订单极限压测中,除了ECS服务器,其他节点,中间件均为达性能瓶颈,5分钟入库400000订单。

错误问题描述

压测过程中,超过5000并发之后错误率提升到了0.10%,是由于并发注册后,注册接口返回异常导致无法注册、无法登陆、无法加入购物车、无法下单等操作,所以导致错误率到了0.1%,但是实际使用中应该是只有1/5的错误率,也就是实际错误率应该是0.02%。

生产环境建议

redis在压测过程中出现过redis内存OOM的问题,是由于消费者不能及时的消费订单等缓存信息,短期内缓存均没有过期等问题导致,建议在生产环境时注意缓存内存问题。

前期压测过程中瓶颈均在数据库,由于事务与索引问题导致,自行压测或者生产环境时要慎用事务,以及应该对业务涉及的数据库索引进行优化。

生产环境配置建议

建议实际生产环境运行时,最高并发量每增加500,增加一个节点,来保证用户的体验。

生产环境建议着重注意服务器数据库性能,尽可能在限度内提升数据库的性能。

results matching ""

    No results matching ""