《魔兽世界:永恒》BETA 开服故障复盘:Tom Ellis 亲述掉线、卡顿与连环重启的幕后原因 - 封面图

《魔兽世界:永恒》BETA 开服故障复盘:Tom Ellis 亲述掉线、卡顿与连环重启的幕后原因

《魔兽世界:永恒》BETA 开服故障复盘:Tom Ellis 亲述掉线、卡顿与连环重启的幕后原因

BlizzCon 上《魔兽世界:永恒》(WoW: Forever)公布之后,玩家的第一反应就是冲进 BETA——成千上万人排队涌入艾泽拉斯,想看看里面到底藏了什么新东西。但和大多数 BETA 一样,问题不少,既有预料之中的,也有完全没料到的;而那些"没料到的",让很多人忍不住问:为什么刚开服的时候这么卡、这么掉线、这么难受?

高级游戏制作人 Tom Ellis 在 X(推特)上发了一篇长帖,详细讲述了《永恒》BETA 开服时遇到的几类问题。按照原定安排,在那场 WoW 直播 QA 结束后《永恒》服务器就该上线,但问题让开服推迟了;即便服务器开始起来了,很多玩家仍遇到掉线、长时间排队,好不容进到游戏里,又碰上拾取延迟等毛病。

《魔兽世界:永恒》BETA 开服故障复盘

🎯 先回答那个大家都在问的问题

Tom Ellis 的原帖开头很直白,他复述了玩家最常见的吐槽:

"我的天,这游戏都 20 年了,你们怎么还能把这事搞砸?!"

他的回答是:因为 BETA 跑的是PTR 测试环境栈,离生产环境差了十万八千里。WoW 的 BETA 通常不是"流量大户",所以这套环境本身就没有那么强的性能——这正是当天第一个问题的源头。

🔌 故障一:排完队,刚进去就被踢下线

  • 排队本身是正常的:那是 Battle.net 在自我保护,对登录做限流,属于常规操作
  • 真正的问题是通过队列进游戏后立刻掉线——这是当天排查耗时最久的一个问题(大概花了半小时左右)
  • 关键背景:《永恒》BETA 这套小环境只用了一个区域级(REGIONAL)实例
  • 诡异之处在于:所有服务的 CPU 和内存都正常,甚至"闲得发慌";Battle.net 游戏服务(BGS)团队回头检查自己的服务,也全是正常状态,却在持续返回超时

最终工程师们定位到:问题出在 BGS 的计量(metering)系统——那是用来保护 BGS 服务在极端负载下不被打垮的机制。这个极小的区域实例只有两条连接,却试图登录大量用户;虽然它的 CPU 远没跑满,却把计量系统的算法彻底算歪了。

把连接数从 2 扩到 8 之后,闸门立刻重新打开。Tom Ellis 也承认:这里的教训是这套计量系统触发时需要更多日志和通知——因为这是 20 年来第一次见到它在"CPU 明明没问题"的情况下自行启动。

🐢 故障二:拾取、接任务,一切碰数据库的操作都变慢

接下来是长的拾取时间、接任务卡顿——凡是需要和数据库交互的操作都慢。

  • 原因:BETA 使用的 PTR 数据库响应查询非常慢
  • 处理方式:Oracle 数据库工程师手动对所有表执行 analyze,并配置了自动化定时任务周期性重复执行
  • 为什么要这么做:其中一些表是全新的,而既有表也在经历海量插入和新的查询模式,所以在数据还在剧烈变动的阶段,需要更频繁地做检查
  • 结果:analyze 一跑完,数据库性能立刻恢复

Tom Ellis 还补了一句给 DBA 同行的冷幽默:之所以叫 "analyze",是因为"我们年纪大了"——他们当然知道现在叫 DBMS_STATS。

🔁 故障三:连环重启与 OOM Killer

开服几个小时后,团队发现运行游戏模拟的 WORLD 池 CPU 异常飙高、内存接近枯竭,随后开始看到第一批虚拟机被 OOM killer 干掉,一度威胁到宿主机(hypervisor)本身。

  • 定位结果:空地图没有被正确关闭,导致 CPU 和内存被慢慢(其实也不算慢)吃掉
  • 修复方案很快通过 QA,但需要重启才能生效
  • 顺便做了两手准备:额外增加了一些 WORLD,并给那个区域级服务也添了一个"朋友"(冗余实例)

✅ 结局:第二次上线,一路顺畅

标记上线之后,玩家这次毫无波折地涌了进来。Tom Ellis 表示,作为公开 BETA 的最初几个小时,目前的状态"难以置信地顺滑";Classic 团队还在盯着修复任何阻塞性问题,但当晚基本可以收工了。

📝 小结

  • 《永恒》BETA 开服当天经历了掉线、长队列、拾取延迟、多次重启等一连串问题
  • 根因有三个层面:BETA 用的是性能有限的 PTR 环境栈、单区域实例把 BGS 计量系统算歪(连接 2→8 修复)、PTR 数据库查询过慢(手动 analyze + 定时任务修复)
  • 服务器端还有空地图未正确关闭导致 CPU/内存被吃光、VM 被 OOM killer 击杀,靠修复 + 重启 + 增加 WORLD 实例解决
  • 官方承认需要为计量系统补充更多日志与通知;这是 20 年来第一次它在 CPU 正常的情况下触发
  • 修复后再次上线,公测初期表现非常顺畅

信息来源(原文出处)