首页

《无限》Beta问题幕后说明

《无限》在暴雪嘉年华公布后,玩家们兴奋不已,迫不及待想进入Beta测试,数千人排队涌入艾泽拉斯,想看看有什么新惊喜。不过,和大多数Beta测试一样,问题不少,有预料之中的,也有预料之外的——而那些意外问题让许多玩家想知道,为什么刚开服时那么多Bug、延迟,简直让人抓狂。

高级游戏制作人Tom Ellis在X(Twitter)上发了一篇长文,说明《无限》Beta测试上线时的问题。WoW问答直播结束后,《无限》服务器本应随即上线,但问题导致上线延迟。即便服务器开始启动,许多玩家仍遇到掉线、长时间排队,甚至终于进入游戏后,还有拾取延迟等等。

好了,现在尘埃落定,你们正开心地玩着,让我们来回答我看到的最常见的问题。

1. 天哪,这游戏都20年了,你们怎么还这么菜!?!

a. 嘿,说得也对。简单来说,这是我们Beta PTR环境的技术栈,离正式生产环境差了十万八千里。WoW的Beta测试通常不会带来巨大的负载波动,所以这个环境本身就没那么强。这就导致了你们今天看到的第一个问题。

我们上线后不久,当你通过登录队列(那只是B.Net在自我保护,限制登录速率,很正常!)之后,你被断开了连接。啊,这不太对。这个问题是今天所有问题里花时间最长的(即便这样,我想也大概花了半小时?)。我们这个小Beta环境只用一个区域服务器。嗯,我们真该哪天做个关于WoW基础设施的座谈会,好让这些事说得通。总之……

这后来被证明是个问题,但花了一阵子才找到,因为我们所有服务的CPU和内存都正常,甚至闲得发慌。而当Battle.Net游戏服务团队查看我们正在通信、并从中收到超时的那些服务时,它们也很闲。搞什么鬼。最终工程师们发现,我们撞上了BGS的计量系统,那个系统是用来保护他们的服务在极端负载下不崩溃的。我们那个小小的区域服务器,带着两个连接,试图让大量用户登录,尽管CPU远未达到上限,却完全搞乱了那个系统使用的计算。我们把那个2扩到了8,闸门立刻再次打开。我们都意识到,当这个系统介入时,需要更多日志和通知,但这是第一次有人看到它在没有明显CPU问题伴随的情况下介入。20年了,总有新东西。

接下来……啊对,在那之后不久,你们许多人看到拾取时间很长、接受任务等等,任何与数据库交互的操作都很慢。Beta使用的PTR数据库响应查询要花很长时间。我们勇敢的Oracle数据库工程师不得不对所有表执行手动分析,并设置一些自动化任务定期持续执行,这是因为有些表是新的,而现有表正经历大量插入和新的查询行为,所以在数据仍变化如此之大时,一切都需要更频繁地检查。这些一执行,数据库性能立刻恢复正常。对任何数据库工程师来说,是的,我们说“分析”,因为我们老了,我们知道它叫DBMS_STATS。

重启!我们把你们都踢下线了。几个小时后,我们注意到运行游戏模拟的世界池CPU疯狂飙升,内存也几乎耗尽。接着我们开始看到第一批虚拟机被OOM killer干掉,因为它们险些拖垮虚拟机监控程序。经典团队工程师能够确认,我们没有正确关闭空地图,所以我们慢慢地——嗯,也没那么慢——吞噬着CPU和内存。一个快速修复通过了QA,但需要重启才能生效。我们还借此机会额外增加了一些世界,以防万一,并给那个区域服务多加了一个伙伴,以防万一。

再次标记为上线,你们所有人毫无波折地涌了进来。目前,公开Beta测试的头几个小时里,一切异常顺畅,经典团队在盯着并修复任何出现的阻塞问题,除此之外我们今晚基本收工了,玩得开心!