Apollo 技术文档Apollo 技术文档
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
指南
  • 架构概述
  • BigWorld 架构深度解析
  • BigWorld 进程架构与玩家生命周期
  • AOI九宫格系统详解
  • AOI广播与消息去重
  • Base 模块
  • Core 模块
  • Runtime 模块
  • Data 模块
  • Network 模块
  • /modules/actor.html
  • Game 模块
  • BigWorld 模块
服务器应用
API 参考
QA
GitHub
  • MMORPG 架构 QA

Q69: 单服承载 5000 人需要考虑哪些问题?

核心结论

“单服 5000 人”不是一个单纯的连接数问题,而是一个综合系统问题。

真正要先问的不是“机器够不够强”,而是:

  • 这 5000 人是分散在线,还是高密度同屏
  • 他们主要在主城、野外还是副本
  • 行为模式是挂机、移动还是高频战斗

因为同样是 5000 CCU,负载模型完全可能相差一个数量级。

一、先定义“5000 人”到底是什么意思

至少要区分:

  • 5000 连接
  • 5000 活跃玩家
  • 5000 分散场景玩家
  • 5000 同屏或热点集中玩家

这几种情况对系统的压力完全不同。

真正难的通常不是连接建立,而是:

  • AOI
  • 广播
  • 战斗同步
  • 场景热点

二、单服承载的瓶颈通常来自哪里

常见包括:

  • 网络广播扇出
  • AOI 计算
  • 场景逻辑单点热点
  • 内存和对象数量膨胀
  • 数据库和缓存链路压力

所以评估单服 5000 人,不应只看网关层。

三、热点场景会先决定上限

最危险的通常是:

  • 主城聚集
  • 世界 Boss
  • 活动开启瞬间
  • 大规模战场

这些场景会把:

  • 广播量
  • 邻居数
  • 仇恨和战斗计算
  • 客户端同步压力

同时推高。

四、系统必须按模块做容量预算

更稳妥的评估方式通常是拆开看:

  • 每玩家平均消息量
  • 场景内平均邻居数
  • 每秒技能和战斗事件数
  • 单位时间数据库写入量
  • 单位时间副本和定时任务数量

这样才能知道先爆的是哪一层。

五、单服扛 5000 人往往不是靠单点极限优化

更现实的做法通常是:

  • 做好场景分层
  • 限制热点同屏
  • 减少无效同步
  • 控制高频链路成本

很多时候“单服 5000 人”能不能成立,取决于玩法是否允许把极端热点拆开,而不是单机能不能硬扛。

六、需要提前准备的几类能力

1. 观测能力

没有观测,根本不知道瓶颈先出在哪。

2. 压测能力

必须用接近真实的玩家行为去压,而不是只压连接数。

3. 降级能力

当接近极限时,是否可以:

  • 降低同步频率
  • 限制低优先级消息
  • 暂停非核心功能

4. 热点隔离能力

要能识别并处理热点场景,而不是全服平均思维。

七、工程上更稳妥的判断方式

如果要评估单服 5000 人,通常应至少回答:

  • 主城最高容纳多少人
  • 一场大型活动能承受多少广播扇出
  • 技能处理峰值是多少
  • 数据库写入峰值是多少
  • 内存峰值时哪些对象是大头

只有这些答案清楚,“5000 人”这个数字才有意义。

八、常见误区

1. 5000 人就是 C10K 问题

不对。连接只是基础,真正瓶颈通常在场景和同步层。

2. 机器规格够大就能扛住

如果架构和热点分布没控制好,再大的机器也会先被局部热点击穿。

3. 平均负载达标就说明单服承载达标

很多事故都发生在热点和峰值,而不是平均值。

参考资料

  • MMO 容量评估、热点场景治理和行为模型压测实践资料
在 GitHub 上编辑此页
最后更新: 3/20/26, 6:06 AM
贡献者: cuihairu