//没登陆

欢迎您来到凯恩之角,奈非天!

帖子:2256

符文:738

发表于 2021-10-15 03:10:54 |显示全部楼层
暴雪社区经理在论坛上发表了一篇4千字的文章来解释他们所遭遇的问题,阐述了暴雪所做的努力,以及对未来的保证。




大家好。

自暗黑2重置版推出以来,我们遭遇了多个服务器问题,我们希望就导致这些问题的原因以及迄今为止我们为解决这些问题所采取的步骤给提供一些信息。我们还想让大家深入了解我们的进展情况。

简而言之:我们的服务器中断不是由单一问题引起的;我们正在解决出现的每一个问题,包括缓解方案和长期的架构更改方案。少数玩家经历了角色进度损失 - 在未来,由于服务器崩溃而导致的任何损失都应限制在几分钟之内。这对我们来说不是一个完整的解决方案,我们正在继续解决这个问题。在暴雪其他人的帮助下,我们的团队正在努力将游戏体验带到一个对每个人都感觉良好的位置上。

我们将在这里对一些工程的具体细节进行一些探讨,但我们希望总的来说这有助于大家了解这些中断发生的原因以及我们为解决每个问题所做的工作,以及我们如何正在调查整体上的根本原因。让我们从头开始说起。

服务器的问题:

在我们讨论这些问题之前,我们将简要介绍一些有关我们的服务器数据库如何运作的背景信息。首先,是我们的全球数据库,它是大家所有角色信息和进度的唯一真实来源。大家可以想象,这对于一个数据库来说是一项艰巨的任务,而且它自己也单独应付不了。因此,为了减轻我们全球数据库的负载和延迟,每个地区——北美,欧洲和亚洲——都有单独的数据库来存储你角色的信息和进度,你所在地区的数据库会定期写入全球数据库。大家的大部分游戏内操作都是针对该区域的数据库执行的,因为它速度更快,并且大家的角色被“锁定”在那里以保持个人角色记录的完整性。全球数据库也有备份,以防主数据库出现故障。

考虑到这一点,为了解释一直以来所发生的事情,我们将重点关注在从10月9日星期六到现在所经历的停机事件上。

太平洋时间周六早上,由于流量突然大幅激增,我们遭遇了全球中断。这是我们的服务器根本没有经历过的一个新阈值,甚至在发布时也没有经历过这样的。我们前一天推出的旨在增强游戏创建性能的更新,则加剧了这一问题——这两个因素结合在一起,使我们的全球数据库过载,导致它超时。我们决定回滚我们之前部署的周五更新,希望这将减轻周日的服务器负载,同时也让我们有空间深入调查根本原因。

然而,在周日,很明显我们周六所做的还远远不够——我们看到了更高的流量增长,导致我们再次遭遇中断。我们的游戏服务器观察到与数据库的断开连接,并立即尝试重新连接,如此反复尝试,这意味着数据库永远没有时间同步我们已完成的工作,因为它太忙于处理游戏服务器的连续连接尝试。在此期间,我们还看到我们可以对数据库事件日志进行配置改进,这是在数据库发生故障时恢复健康状态所必需的,因此我们完成了这些工作,并进行了进一步的根本原因分析。

周日宕机的双刃剑是,由于我们在周六采取的措施,使得我们已经创建了一个基本上关于如何快速恢复的脚本。这是好的一面。

但是因为我们如此之快在玩家活跃的高峰期再次上线,几十分钟内有数十万个游戏创建,我们又一次崩溃了。这就很糟糕。

因此,我们有许多修复补丁要部署,包括配置和代码改进,我们将这些修复部署到备份全球数据库上。这将我们带到10月11日星期一,当时我们在全球数据库之间进行了切换。这导致了另一次中断,当我们的备份数据库错误地继续运行其备份进程时,这意味着它花了大部分时间尝试从另一个数据库复制,而它本应为来自服务器的请求提供服务。在此期间,我们发现了更进一步的问题,并进行了进一步改进——我们发现了一个自弃用但很费力的查询,我们可以完全将其从数据库中删除,我们优化了玩家加入游戏时的资格检查,进一步减轻了负载,并且在我们发表这篇文章的时候,我们也在测试中进一步提高了性能。我们也相信我们修复了我们所看到的数据库重新连接风暴,因为我们没有看到它在周二发生。

然后在周二,我们达到了另一个并发玩家的高峰,仅在一个地区就有数十万玩家。这使我们遇到了另一起数据库性能下降的事件,我们的数据库工程师目前正在研究其原因。由于我们自己的团队专注于核心服务器问题,我们还联系了暴雪的其他工程师进行一些较小的修复工作,我们也联系了我们的第三方合作伙伴寻求帮助。

为什么会发生这种情况:

为了忠于原版游戏的原汁原味,我们保留了很多的遗留代码。然而,其中有一项特别的服务很难跟上现代玩家的行为。

这项服务在原始版本的基础上进行了一些升级,负责处理游戏的关键部分,即游戏的创建/加入,更新/读取/过滤游戏列表,验证游戏服务器健康状况,从数据库读取角色,以确保大家的角色可以参与你希望参加的内容。而重要的是,此项服务是单例的,这意味着我们只能运行它的一个实例,以确保所有玩家始终看到最新和正确的游戏列表。我们确实以多种方式优化了这项服务以符合更现代的技术,但正如我们之前提到的,我们的很多问题都源于游戏创建。

我们提到“现代玩家行为”是因为这是一个有趣的思考点。在2001年,互联网上几乎没有关于如何“正确”玩暗黑2的内容(刷巴尔拿经验,暴皮/远古通道/其他地方MF等等)。然而,今天,一个新玩家也可以找到惊人数量的内容创作者,他们可以教他们如何以不同的方式去玩游戏,其中许多就包括大量的数据库负载,包括了快速创建,加载和退出游戏的形式。尽管我们确实也预见到了这一点——玩家在新服务器上创建新角色,努力获得他们的MF物品——但我们大大低估了我们从Beta测试中得出的范围。

此外,总的来说,我们过于频繁地保存到全球数据库中:其实没有必要像以前那样经常去这样做。我们真的应该将大家保存到地区数据库中,并且仅在我们需要解锁时才将大家的数据保存到全球数据库中——这是我们采取的缓解措施之一。现在我们正在编写代码来完全改变我们的做法,所以我们几乎永远不会保存到全球数据库中去,这将显着减少该服务器的负载,但这是一个架构的重新设计,需要一些时间来构建,测试,然后实装。

关于进度损失的说明:

一些玩家经历的进度损失是由于我们在区域和全球数据库都进行角色锁定的做法 - 当大家被分配到一个地区时我们会在全球数据库里将你的角色锁定。(例如,当大家在美国地区游戏时,我们将大家的角色锁定在美国地区,并且大多数操作都在美国地区的数据库中解决。)

问题是在服务器中断期间,当数据库崩溃时,许多角色会卡在区域数据库中,我们无法将它们移动到全球数据库中。当时,我们认为我们有两个选择:要么解锁全球数据库中未保存更改的每个角色,从而由于全球数据库中发生的覆盖而失去一些进度,要么我们以不确定的数量完全关闭游戏并运行脚本将区域数据写入全球数据库中。

当时,我们采用了前者的做法:我们认为保持游戏运行更为重要,让玩家可以继续玩,而不是长时间关闭游戏以恢复数据。对于丢失重要进度或贵重物品的玩家,我们深表歉意。身为玩家,我们知道回滚的痛苦,感同身受。

展望未来,我们相信我们有一种方法可以恢复角色而不会导致任何重大的数据丢失——在服务器崩溃的情况下,它丢失的数据应该被限制在几分钟内。

这种情况好些了,但在我们看来仍然不够好。

我们正在做的事情:

速率限制:我们正在围绕限制创建和加入游戏对数据库的操作数量,我们知道你们很多人都感受到了这一点。例如,对于那些刷暴皮的人来说,大家可能会在20秒内进出游戏并创建一个新游戏。在这种情况下,大家将在某一点上受到速率限制。当发生这种情况时,错误消息会说与游戏服务器通信出现问题:这不是说游戏服务器此时崩溃了,它只是意味着大家已被限速以暂时减少数据库的负载,这是为了保持游戏的运行。我们可以向大家保证,这只是暂时的缓解措施——我们不认为这是一个长期的解决方案。

登录队列创建:过去的这个周末出现了一系列的问题,不是同一个问题反复出现。由于玩家群体的重振,多个平台的加入以及其他与扩展相关的问题,我们可能会继续遇到些小问题。为了快速诊断和解决这些问题,我们需要确保“羊群效应”——大量玩家同时间登录——停止。为了解决这个问题,我们有登录队列,就像大家在魔兽世界中所经历的那样。这将使玩家人数保持在我们当时的安全水平上,因此我们可以监控系统的紧张程度,并且在游戏完全崩溃之前解决它。每次我们修复一个区块,我们就能够增加人数上限。这个登录队列已经在后端部分实现了(现在,它在客户端看起来像身份验证失败),应该在未来几天内完全部署在PC上,随后是主机平台。

将功能的关键部分分解成更小的服务:这项工作的一部分正在进行中,我们可以在不到一天的时间内处理一些事情(有些已经在本周完成),并且还计划用于更大的项目,例如新的微服务(例如,一个只负责向玩家提供游戏列表的 GameList 服务)。一旦关键功能被分解,我们就可以考虑扩展我们的游戏管理服务,这将减少负载量。

我们的工作人员非常努力地实时管理事件,诊断问题和实施修复——不仅在D2R团队,而且是整个暴雪。这场游戏对我们所有人来说意义重大。我们团队中的很多人都是D2的终身玩家——我们在2001年首次发布时玩过,有些人是MOD社区的一份子等等。我们可以向大家保证,我们将继续努力,直到我们不仅作为开发人员,而且作为玩家和社区成员都感到满意为止。

请继续向暗黑2重置版论坛提交大家的反馈, 向我们的错误报告论坛报告大家遇到的错误, 如需故障排除帮助,请访问我们的技术支持论坛。 感谢大家通过所有渠道与我们进行持续沟通 - 在我们处理这些问题时,这些反馈对我们来说非常宝贵。

暗黑破坏神社区团队将通过论坛让大家了解我们的最新进展。

暗黑2重置版开发团队
已有 1 人评分符文 收起 理由
蛮人切菠萝 + 5 感谢分享

总评分:  符文 + 5   查看全部评分

实时暗黑资讯微博 http://weibo.com/diiicn

帖子:208

符文:11

2#
相信暴雪也在努力解决。
发表于 2021-10-15 03:34:14 来自凯恩之角App |显示全部楼层

帖子:264

符文:10

3#
比想象中在线人数多的多
发表于 2021-10-15 03:42:03 |显示全部楼层

帖子:804

符文:19

4#
有个解释就好,之前推上的复制粘贴式公告只会让玩家越来越愤怒
发表于 2021-10-15 03:50:40 |显示全部楼层

帖子:366

符文:11

5#
其实就是通过攻击造成瘫痪来dupe
发表于 2021-10-15 03:50:47 来自凯恩之角App |显示全部楼层

帖子:1109

符文:130

6#
一个是beta测试反馈不够,原因是之前的重置都太差,让大部分玩家选择观望,等玩过的人给出好评后大部分玩家才真正买入游玩,导致实际玩家数大大超出官方预期,所以服务器配置不高,然后再加上老代码没优化,现如今成熟的游戏套路导致最初的做法造成了严重的负载问题,就是暴皮,劳模都没那么快,但是说实话玩家退出了直接把房间删掉就行了,没必要保留那么久,总之我一直相信官方肯定是在努力解决的,这次的问题不能全怪官方,但是官方也是脱不掉责任的,再忙着修复也应该在前几天的推说好点,哪怕多一个抱歉都不至于这样,不过还是互相理解吧,20年前的老代码维护是几乎不可能了,想改只能重写,加油吧,争取这几周内完全解决
发表于 2021-10-15 03:59:13 来自凯恩之角App |显示全部楼层

帖子:143

符文:13

7#
就是人多造成的。另外这个排队机制,不会每次刷完重开就排队吧?
发表于 2021-10-15 04:43:01 来自凯恩之角App |显示全部楼层

帖子:1424

符文:14

8#
单人建房间有时间限制可以理解,不过大厅加入游戏能不能不要那么严啊,真的很让人崩溃
发表于 2021-10-15 05:14:55 来自凯恩之角App |显示全部楼层

帖子:1681

符文:30

9#
卖太好了,服务器跟不上了,不如就放开大陆的私服搭建吧!呵呵呵呵呵
发表于 2021-10-15 05:27:04 来自凯恩之角App |显示全部楼层

帖子:12

符文:23

10#
架构太差,弹性扩展考虑太少,微服务拆分不够。总体来说就是前期对玩家数量心里没数,不敢投入太多人月修改老代码。完全是暴雪的锅。
发表于 2021-10-15 05:45:33 来自凯恩之角App |显示全部楼层

帖子:12

符文:23

11#
另外以后不能全球服务器都会有自己的角色了,会锁区
发表于 2021-10-15 06:02:59 来自凯恩之角App |显示全部楼层

帖子:4041

符文:763

12#
我就进来看看
发表于 2021-10-15 06:18:01 来自凯恩之角App |显示全部楼层

帖子:14543

符文:3216

13#
原汁原味的原始代码在作祟
发表于 2021-10-15 06:24:54 来自凯恩之角App |显示全部楼层

帖子:1423

符文:8

14#
4千字的文章,好家伙。。。。。。
发表于 2021-10-15 06:29:12 来自凯恩之角App |显示全部楼层

帖子:139

符文:38

15#
就差把工作室名字一一列举了。
期待后续更新的同时放出第一批封禁名单吧
发表于 2021-10-15 06:30:27 来自凯恩之角App |显示全部楼层
您需要登录后才可以回帖 登录 | 注册网易通行证