跳转到内容

白洞版 · 性能压测报告

工具:阿里云 PTS。分别做单机与集群负载均衡。提交订单会锁库存、写 MySQL,并由 Canal/MQ 同步 ES、Mongo。压测过程无 Error,JVM 正常。购买机器更应注重 CPU 核心数,内存占用全程不明显升高。

应用 8 核 32G × 1,RDS 8 核 16G。

PTS 单机报告

指标 结果
TPS 平均 / 峰值 440 / 502
平均 RT 910 ms
成功率 100%
异常 0
总请求 5.2 万
RDS CPU / 内存 约 18% / 20%

链路:提交订单(扣库存 + 写 MySQL)→ Canal 发 MQ → 搜索服务同步 ES(列表)与 Mongo(统计)。Canal、RocketMQ、ES、Mongo 会占用单机性能,从而限制订单 TPS。

2. 普通订单 · 集群(只扩订单服务)

Section titled “2. 普通订单 · 集群(只扩订单服务)”

中间件 8 核 16G × 1;接口机 8 核 32G;订单服务 4 核 4G × N;订单库与非订单库分 RDS;Redis 1GB。其它服务维持在不影响订单即可。

订单服务台数 TPS 平均/峰值 总请求 成功率
1 682 / 769 8.1 万 100%
2 1311 / 1502 15.4 万 100%
4 2820 / 3022 33.5 万 100%

热路径服务:订单、商品(库存)、鉴权、搜索、用户。中间件:MySQL、Canal、RocketMQ、ES、Mongo。

一台 RDS MySQL 对应 4 个订单服务(4 核 4G)时达到上限,继续扩容需增加 MySQL(或 PolarDB)。分库可通过配置扩容,旧数据需按分片规则迁移。

秒杀服务 4 核 4G × N;Redis 1–8 GB;RDS 8 核 16G。数据先写 Redis(AOF),异步落 MySQL。

秒杀服务台数 TPS 平均/峰值 总请求 成功率
1 2537 / 2790 30.2 万 100%
2 5079 / 5263 60.4 万 100%
4 9892 / 10202 117.7 万 100%
6 14389 / 14895 165.4 万 100%
8 18608 / 19436 221.4 万 100%

8 台后 Redis 成为瓶颈。再加一台 Redis 后两台 CPU 约 50%–60%。网关与鉴权会影响秒杀;商品服务异步写库存记录,不要与秒杀同机。TPS 约 1.8 万时优先加 Redis 节点。

单机(8 核 32G):TPS 2057 / 2321,平均 RT 242 ms,总请求 61.5 万,成功率 100%。首次查 MySQL,后续走 Redis 缓存。

集群(product 4 核 4G × N):

服务数量 TPS 平均/峰值 总请求
1 2580 / 2748 61.6 万
2 4385 / 4644 104.8 万
4 8490 / 8976 199.5 万

Redis 打满后再扩 Redis。

单机 ES 单节点时,CPU 主要在 search 服务与 ES。关键词分词比首页列表慢;附近门店还要算经纬度。

集群下 search 服务水平扩展近似线性;ES 数据节点与 search 数量建议约 3:2。搜索对 CPU 敏感、对内存要求不高。