
游戏托管中的负载测试,第1部分
在最近一次与Edgegap的首席技术官Philip Cote的对话中,他阐明了游戏托管中较少被提及的一个方面。他透露了Edgegap如何通过使用各种负载测试方法帮助游戏工作室为游戏发布做准备。
我们的第一个问题很简单 - 什么是负载测试?
这完全是关于生成假玩家来玩一个模拟游戏。基本上,它涉及我们尝试在游戏中模拟尽可能极端的负载,通过在全球范围内启动大量虚拟玩家来实现。
为什么要进行全球范围的负载测试?
如今最大的在线游戏可以同时容纳来自全球各个角落的玩家。大多数即将成立的游戏工作室也渴望达到全球规模。如果我们从一个地方生成所有玩家,那么我们的系统将无法达到最佳性能。通过在全球范围内生成随机的IP地址,并将这些玩家配对以获得真实的场景,我们为任何可能性做好准备。
这听起来像是一个庞大的程序。是这样吗?
确实如此 - 特别是在考虑到我们为客户的游戏负载测试的流量量至少是其流量的两倍时。这样,即使出现增加或停机,我们也始终有足够的余地将平台的容量翻倍。但现在对我们来说,这比开始时要容易得多。我们最初的负载测试是由实际的人进行的,所以这非常耗费精力。现在,我们将一些AI应用于假玩家,并让他们参与其中。我们新的一种负载测试方法是让这些虚拟玩家玩最早的电子游戏之一,Pong。我们上线两个假玩家,让他们请求对战,一旦我们的匹配器自动生成对战,服务器就会被部署。刚一开始,AI就开始控制屏幕上的白线,我们监测每一个可用指标。我们测试我们解决方案的每一个方面,甚至进一步测试玩家本身。
负载测试在在线游戏中真的重要吗?
绝对重要。如果你在一个电子商务网站上,而你的连接速度如此缓慢,以至于你无法找到你想要的卫帽,你会怎么做?典型用户会最小化他们的浏览器,做点别的,然后再回来购物。然而,游戏玩家可不会这么有耐心。为什么?因为他们是热情的人。如果玩家在玩游戏时有糟糕的体验,他们通常会在Reddit或Twitter上发声。没有‘我会一个小时后再回来’。由于玩家在放弃游戏后放弃的概率很高,我们需要确保我们的工具在正确的时间、正确的地点部署所有正确的服务器。
你如何为负载测试做准备?你采取了什么步骤?
Edgegap团队就像一个飞行 crew。在团队的带领下,我们有我们的创始人和飞行员Mathieu。第一步通常涉及到预飞检查。在这里,我们将所有相关任务列在我们内部的Wiki页面上,这些任务随后会自动验证。然后是我 - 塔台控制主管。就像我之前提到的,我们的负载测试是游戏客户端能够向我们发送的最大流量的两倍。因此,我必须确保需要调整的所有内容都井然有序。我还趋向于不预先宣布我们要进行负载测试。我们的测试通常是我与大家临时召开会议,然后说一些像‘嘿,我们今天下午x点开会。’当大家都加入后,我会宣布并开始查看数据。计算在测试之前就已经完成,因此我们知道需要生成游戏的确切数量,以及我们需要采取的步骤。我们不安排负载测试的原因是我们希望尽可能接近模拟现实。在现实生活中,我们不会在客户的游戏遭遇流量激增之前得到任何提前警告。我们的负载测试为什么应该有所不同?
除了确保你的服务器能够处理同时在线玩家的激增之外,负载测试还旨在实现哪些其他目标?
我们的直觉通常是确定我们平台的稳定性。Edgegap的Arbitrium基于微服务系统,这意味着它并不是单台机器在处理所有过程,而是一堆小组件,每个组件都有特定的功能。这些组件根据平台的需求大小进行扩展或收缩。由于它们在任何时刻都有数百个活跃工作,所以错误很容易累积并使系统不稳定。这是我们关注的另一点:错误。我们的负载测试确保每个组件始终做出正确的决定 - 无论是扩展还是收缩。这就是与Edgegap的首席技术官第一次访谈的第一部分!敬请期待第二部分,我们将讨论在负载测试中必须考虑的游戏流量的特别之处,以及从一次测试到下一次测试跟踪结果为何如此重要。与此同时,如果您想了解更多信息,请随时与我们联系。
书写者
Edgegap团队