开发团队理解玩家不能正常进行游戏时的焦急与失望的心情,但与市面上其他采用客户端/服务器架构的产品服务一样,我们的游戏是一个复杂的集合体,而相对分散的架构则将游戏功能分配给不同的服务器,其中任意一环出错都有可能带来致命后果:这其中包含有登陆验证服务器、存储玩家资料的服务器、对战服务器、组队功能相关的服务器与处理语音聊天功能的服务器。以上提到的服务器在现实中不仅仅是一台终端而已,而是包含数十台设备的服务器集群!除此之外我们还通过代理服务器来尽量减少错误的发生,而匹配这项工作本身则由另一组服务器集群负责。
阐明游戏服务器的具体机能分配后,让我们详细为您剖析上周末的服务器亚空间风暴期间都发生了些什么:一座网关设备在连续运行 375 天后按计划进行了一次重启工作,但是在重启后它装载了错误的服务器配置,导致设备只能利用单个核心运转(不幸的是我们直到周日才发现这一问题的根源)并错误地代理了IP地址。一开始,运维团队错误地认为这只是更新后大量涌入的玩家造成的一般服务器过载——对于一个拥有诸多新载具乃至全新国家科技树的主要版本更新所能激起的玩家热度而言,这一推测是合理的。因此我们决定租用亚马逊最昂贵和强劲的服务器,并将游戏迁移至这些设备上以提升服务器载荷能力。游戏服务的迁移当然不会在转瞬之间完成;但即使是转移完成之后,由于网关设备配置错误与单线程运行的问题仍未得到解决,在此期间服务器持续认为藉由该网关设备访问游戏服务的玩家均来自同一 IP 地址,因此服务器无法快速分辨不同玩家的访问请求,而大量来自同一 IP 地址的重复请求更是耗干了服务器的最后性能。运维团队最终在北京时间约 17:00 时发现了问题的源头所在并最终解决了技术问题,使得游戏服务恢复正常。而之后凌晨时分游戏恢复正常运作的假象则是夜间玩家数量相对较少,单个网关设备以单线程运作导致的服务器载荷问题尚不足以影响大部分玩家的游戏体验所致。
随着周日玩家数量不断升高,创建的对战数量也随之增多,服务器载荷也再度升高。不过我们终于发现了第二处配置错误的问题所在,并花费了一整个下午的时间将游戏服务自有问题的设备平稳迁移至新的设备——这一措施是为了防止对战局中的玩家们造成影响,而这一系列迁移工作当然也需要不少时间。我们想要特别指出的是,即便是斥资购买亚马逊网络服务升级服务器承载能力之前,既有服务器的载荷能力也完全堪用——而在升级网络服务后我们也只用到服务器总承载能力的 6% 而已(也就是说,即便在巅峰时段服务器也有已用载荷的 20 倍左右的算力作为储备)。
总结
开发团队对于本次服务器波动期间的一系列经验做出总结,并将对战与匹配机制的代码优化列入计划当中。首先,我们计划未来对所有的服务器进行交替重新启动以仔细检查设备的容错机制,还计划利用维护其他大型流媒体设备的经验,设立专门的机器人检查每台设备的连续运行时间。我们已经对当前的匹配机制代码进行了优化,使得即使在相对较重的服务器负荷下游戏的运行表现也能保持在可接受范围内——这一情况下排队时间也许会略有延长,但服务器将持续回应玩家的访问请求从而保持整套系统正常运作。
此外,游戏内国家阵营的增多意味着可能出现的对战阵营组合已经达到了相当大的数目,相关算法的进一步优化已不可避免。而对使用不同国家载具的所有玩家进行匹配更是复杂到了极点,因此未来有必要对相关机制进行优化,在机制容许范围内尽可能做到最好。
更多好消息:在北京时间 11 月 4 日 19:00 至 11 月 8 日 19:00 期间登录游戏即可获得持续 5 场战局有效的 +30% 研发点的高级加成卡!
最后编辑: