压测目的
一、在真实环境下检测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 | 点击跳转 |
图表
服务器状态
ECS服务器
RDS数据库
REDIS
LBS负载均衡
流量
连接数
数据包
新建连接数
QPS
订单极限压测
报表
并发数 | 节点数 | 请求数量 | 吞吐量(每秒) | 平均响应时间(毫秒) | 报告 |
---|---|---|---|---|---|
5000 | 12 | 805461 | 4150.38 | 1118.41 | 点击跳转 |
10000 | 12 | 851877 | 4476.10 | 1547.67 | 点击跳转 |
图表
压测结论
本次压测环境所选的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,增加一个节点,来保证用户的体验。
生产环境建议着重注意服务器数据库性能,尽可能在限度内提升数据库的性能。