压测报告
ChatPulse 压力测试报告
最后更新:2026 年 9 月 5 日 · 基于 ChatPulse v1.4.0 版本在标准 8 核 16G 单机环境下实测
12,800+并发连接单 8C16G 实例稳定承载
52,000TPS每秒消息处理峰值
38msP99 延迟消息端到端送达
99.99%成功率压测全程无消息丢失
测试环境
服务器阿里云 ecs.g7.xlarge · 8 vCPU · 16 GiB · 5M 带宽
操作系统Alibaba Cloud Linux 3.2104 LTS · kernel 5.10.134-19.2.al8.x86_64
中间件Nginx 1.24.0 · Go 1.22.4 · SQLite( WAL 模式) / MySQL 8.0
Go 进程参数GOMAXPROCS=8 · 堆内存上限 6GiB · GOGC=80
客户端模拟自研 loadgen 压测工具,每模拟 10 万用户进程,10 进程并发
压测持续每轮 30 分钟,稳定压测 + 峰值冲击各 5 轮取中位数
01
消息压力测试
模拟私聊、群聊、系统通知等多通道混合消息,单向爆发 + 双向对话两种模式
| 测试场景 | 并发用户 | TPS | P50 延迟 | P99 延迟 | 成功率 |
|---|---|---|---|---|---|
| 私聊单聊(1v1) | 4,000 | 18,200 | 6ms | 22ms | 99.99% |
| 100 人群聊 | 4,000 | 22,600 | 9ms | 31ms | 99.98% |
| 1,000 人超大群 | 2,000 | 9,400 | 21ms | 78ms | 99.96% |
| 系统公告广播 | 12,800 | 52,000 | 4ms | 38ms | 99.99% |
| 图文混合消息 | 3,000 | 7,800 | 14ms | 52ms | 99.97% |
| 峰值叠加(全类型混合) | 12,800 | 52,000 | 7ms | 38ms | 99.99% |
注:系统公告广播采用扇形推送 + 异步持久化,实际送达能力取决于客户端 WS 连接保持,这里为入站到 DB 的吞吐数据。大群场景受客户端退群/刷屏行为影响更大,服务端具备 per-group 令牌桶保护。
02
连接压力测试
单进程 WebSocket 连接上限、握手成功率、断线重连风暴处理能力
| 测试场景 | 连接上限 | 握手成功率 | 建立耗时 P99 | CPU@峰值 | 内存@峰值 |
|---|---|---|---|---|---|
| 稳定长连接 | 12,800 | 100% | 11ms | 62% | 3.8 GiB |
| 连接风暴(1 分钟 5000 次握手) | — | 99.97% | 48ms | 78% | 4.6 GiB |
| 断线重连风暴(模拟 30% 掉线) | — | 99.92% | 62ms | 81% | 4.9 GiB |
| 单进程极限(理论上限) | 21,500 | 99.88% | 82ms | 95% | 7.2 GiB |
注:生产推荐每 8C16G 实例承载 ≤ 8,000 连接,水平扩展靠 SLB 或四层 LVS + 一致性哈希路由。连接风暴场景下,go-netpoll 的 epoll 队列不会丢连接,只有握手阶段受 CPU 抖动影响。
03
群聊专项压力测试
大群成员、群消息风暴、@全体、入群/退群高频操作
大群承载
| 群规模 | 成员上限 | 拉取群成员 P99 |
|---|---|---|
| 普通群 | 1,000 | 28ms |
| 超级群 | 5,000 | 96ms |
| 超大群(企业总部) | 20,000 | 312ms |
群消息风暴
| 场景 | TPS | P99 |
|---|---|---|
| 100 人群刷屏 | 22,600 | 31ms |
| 1000 人群刷屏 | 9,400 | 78ms |
| @全体(1000 人) | 3,200 | 186ms |
注:大群(≥ 1000 人)采用扇形拉取 + 客户端本地缓存成员列表,@全体消息落库后走异步推送队列,避免阻塞主消息链路。
04
注册 · 靓号 · 钱包 压测
用户注册、靓号抢购、USDT 充值并发场景
并发注册
1,800/s
P99 186ms,含短信验证码校验
靓号抢购(单号码)
≤ 2 次误抢
在 5,000 并发请求下,行级锁保证唯一分配
USDT 充值回调
1,200/s
幂等处理,同一 txHash 只入账一次
钱包余额查询
8,500/s
走 Redis 缓存,P99 9ms
05
故障恢复与降级
极端场景下的恢复时间、降级策略、数据一致性
| 故障场景 | 恢复时间 | 数据一致性 | 降级策略 |
|---|---|---|---|
| 单进程 OOM 重启 | ≤ 8s | 未送达消息走离线重发 | WS 自动重连 + 离线消息拉取 |
| DB 主库 failover | ≤ 30s | Raft WAL 保证不丢 | 写请求短暂切只读,自动切主 |
| Redis 缓存雪崩 | ≤ 15s | 回源 DB 无脏读 | 余额接口走 DB 直查,限流保护 |
| 下游 Block 节点不可用 | — | 充值回调持久化重试 | 回调写入本地队列,每 30s 重试 |