1. 文档教程
壹信-开源即时通讯
  • 壹信 — 即时通讯系统
  • 项目源码结构与功能说明书
  • 功能核心分类明细
  • 客户端打包教程
  • Android安卓打包教程
  • iOS苹果打包教程
  • 苹果推送apns配置教程
  • macOS电脑打包教程
  • Windowsn桌面端打包教程
  • mac编译环境配置
  • windows编译环境配置
  • Docker部署后端教程
  • 用宝塔面板搭建服务端
  • API全局接口
  • 并发压力测试报告
  • 服务器配置推荐
  • 适用于上架的隐私协议
  • 端口说明
  • 更新日志
  • 法律声明
文档教程
文档教程
  1. 文档教程

并发压力测试报告

壹软IM 并发压力测试报告#

出品:壹软团队 | 官网:https://www.66demo.cn | 日期:2026-03-09
k6是Grafana 出品的负载测试工具,端到端场景测试用k6 编写脚本模拟真实用户行为 登录 → 建立 WS → 发消息 → 收消息 → 断线重连,HTTPAPI 压测wrk,测试登录、消息历史查询等 REST 接口的 QPS 和延迟

📊 核心指标 (Key Metrics)#

WebSocket 并发连接数:50,000
消息吞吐:12,800 msg/s
P99 消息延迟:23ms
消息投递成功率:99.97%

🏛️ 系统架构 (Architecture)#


🛠️ 技术栈 (Tech Stack)#

Go 1.21 [Backend Runtime]:高性能后端语言,原生 Goroutine 并发模型,零 GC 停顿优化。
Gin + WebSocket [Gateway]:HTTP/WS 双协议网关,gorilla/websocket 长连接管理。
256 分片锁 (ShardedLock) [Concurrency]:基于 FNV 哈希的细粒度分片锁,消除全局锁竞争瓶颈。
ShardedMap 连接管理 [Concurrency]:泛型分片 Map,支持百万级 WebSocket 连接的无锁读写。
Redis 消息队列 [Message Queue]:500 Worker 并发处理,支持优先级/延迟/死信三级队列。
MongoDB 按月分表 [Storage]:消息按月自动分表 (messages_YYYYMM),水平扩展无上限。
MySQL 连接池 [Storage]:最大 2000 连接,200 空闲连接,存储用户/会话等结构化数据。
Redis 缓存 [Cache]:5000 连接池,500 空闲连接,缓存/分布式锁/队列三合一。
Flutter 全平台客户端 [Client]:iOS / Android / macOS / Windows 四端统一代码。

🎯 测试场景与结果 (Test Scenarios & Results)#

测试场景并发数持续时间成功率Avg 延迟P99 延迟结果
WebSocket 连接建立50,00060s99.98%45ms120ms✅ PASS
单聊消息发送10,000300s99.97%8ms23ms✅ PASS
群聊消息广播 (200人群)5,000300s99.95%15ms42ms✅ PASS
消息发送 + 存储10,000300s99.97%12ms35ms✅ PASS
多设备同步20,000120s99.96%18ms55ms✅ PASS
断线重连 + 消息补推5,000180s100.00%85ms200ms✅ PASS
心跳保活 (长时间)50,0003600s99.99%1ms3ms✅ PASS

📈 吞吐量对比 (Throughput Performance)#

场景峰值吞吐指标负载占比预估
WS 连接建立50,000 conn100%
单聊消息吞吐12,800 msg/s85%
群聊广播吞吐8,500 msg/s60%
消息队列处理10,200 msg/s72%

⚙️ 并发设计核心指标 (Concurrency Design)#

组件设计参数并发能力锁粒度
ShardedLock256 分片 × RWMutex理论无限(分片级别)FNV 哈希 → 单分片锁
ShardedMap256 分片 × map[string]V百万级 KV 读写单分片 RWMutex
WebSocket Hub32 注册 + 64 广播 Worker50,000+ 连接Channel + Worker Pool
Redis MQ500 Worker / 200 Batch100,000 msg/s 入队Redis 原子操作
MySQL 连接池200 idle / 2000 max2,000 并发查询连接池级别
MongoDB 连接池200 min / 2000 max2,000 并发写入文档级别
Redis 连接池500 idle / 5000 max5,000 并发命令命令级别

💻 测试环境 (Test Environment)#

项目配置参数
服务器宝塔面板 / CentOS 7 / 4C 8G
Go RuntimeGo 1.21, GOMAXPROCS=4
MySQL8.0, InnoDB, max_connections=2000
MongoDB7.0, WiredTiger, 按月分表
Redis7.0, maxmemory 2GB, pool_size=5000
压测工具自研 Go 并发客户端 + wrk + k6
网络内网测试,RTT < 1ms

🏆 压测结论 (Conclusion)#

评级:A+ (并发压力测试通过)#

壹软IM 后端在 50,000 并发 WebSocket 连接下稳定运行,单聊消息吞吐达到 12,800 msg/s,P99 延迟 23ms,消息投递成功率 99.97%。256 分片锁 + ShardedMap 架构有效消除锁竞争,Redis 消息队列 500 Worker 保障消息可靠投递。系统整体表现优异,满足商用标准。

修改于 2026-03-10 16:05:58
上一页
API全局接口
下一页
服务器配置推荐
Built with