智言发 IM 智言发 IMZHIYANFA

交付总览/压测报告

并发能力是压出来的

这一页放的是压测工具跑出来的原始数据:加压到 45.3 万连接的逐轮结果、QPS 与 P99 延迟、各个在线量级下的内存与 CPU 占用。测试环境、工具、日期和前提都写在下面,压测工具随源码交付,你可以用同一套流程在自己的机器上复核。

稳定连接 453,827 条 HTTP QPS 20,781 P99 29.5 ms

01 / 测试环境 ✓✓前提公开 可自行复跑
压测报告

45.3 万连接,是一轮一轮压上去的

下面每个数字都来自 im-benchmark 的实际运行结果,不是推算。这份报告的前提条件写得比数字还细 —— 脱离环境的性能数字没有意义。

测试环境

服务器8 核 CPU / 15.1 GB 内存

服务端与压测工具跑在同一台机器上,共享这 8 个核心。这个前提直接影响后面的建连速率。

02 / 极限连接 10 轮加压 含失败率

WebSocket 极限连接测试

从 500 逐步加压到 50 万,每一轮失败率超过 30% 就自动停止。最后一轮目标 50 万,实际稳定挂住 453,827 条长连接。

5005000%7,046/s

5 万连接之后建连速率从 11,112/s 掉到 1,980/s,是因为服务端和压测工具把这 8 个核抢满了,CPU 到 100%。已经建立的连接没有掉线,掉的只是继续加压的速度。

03 / 综合评测 不限流模式

综合评测

吞吐与延迟是另一组场景单独测的,和上面那张连接表不是同一轮。两个数字不能相乘理解。

HTTP API 并发

QPS 20,781 · P50 5.8ms · P99 29.5ms

04 / 资源占用 每连接约 30KB

各在线量级的资源占用

这张表比连接上限更有用 —— 它回答的是「我这台机器现在扛着多少人、还剩多少余量」。

5 万约 2.5 GB约 70%稳定

每条连接约占 30KB 内存:2 个 goroutine,加读写各 8KB 缓冲,加 256 条发送通道。

05 / 口径

这份报告怎么读

下面这几条决定了上面的数字该怎么用。写出来是因为:能把边界讲清楚的性能数据,才是能拿去做决策的性能数据。

  1. 测的是连接保持能力,不是同时聊天的人数。
下一步

软件能扛多少,和你该买多大机器

这一页回答的是前者。后者要把公网带宽算进去 —— 带宽往往比 CPU 先到顶。技术架构页上有一张按配置推的容量估算表,两页一起看才能定下机器规格。