【崩溃101】第一期:Ticking player
mr普拉斯
2019年05月02日 21:07
收录于文集
共2篇

什么是崩溃101?

崩溃101是一个专栏系列,在这里我们挑选典型的游戏崩溃原因,对其进行简单分析,并进行存档的修复,希望经过长期的更新,能够涵盖一部分大家平时游玩常见的崩溃类型,以达到鼓励大家自己动手看崩溃报告、修复存档的目的。

注:本系列旨在以最简单的方法修复问题并恢复存档,并不代表我们使用的方法能留下最多的数据,因为很多情况下损毁的数据是很难手动修复的,也不是一般玩家能够做到的。


本期我们来看一个实例:玩家数据的崩坏

一、实例分析与解决

某日,某拉斯所开的粉丝服出现了崩溃,报告如下:

https://pastebin.com/Mh8QtFrA

我们直入重点,在报告中可以看到这么几行

其中Description: Ticking player 告诉我们本次崩溃是由于服务器无法处理下个tick某玩家的数据造成的,我们接着向下看,at mrriegel.storagenetwork.block.request.ContainerRequest.getTileMaster(ContainerRequest.java:85)这一行中出现了storagenetwork这个字眼,正对应着Simple Storage Network这个mod

于此同时,服主在服务器群中看到了这条消息:

这正巧对应上了我们刚发现的问题:一位玩家从简单存储系统中拿取物品时,由于某种原因,服务器无法处理他的数据,于是崩服。

我们继续看崩溃报告。

我们发现了这一部分:-- Player being ticked --

这对应着我们刚才发现的主要问题:Ticking Player ,而这里就是出问题的玩家的具体信息

鉴于开头说过的原因,我们直接找到该玩家的ID:reydan2

然后让这个玩家找到自己的uuid:

(最简单的办法是让该玩家打开一个单人存档,进入后查看其存档目录中playerdata目录下的唯一文件名,文件名即该玩家的uuid)

例:目录

然后该玩家找到了他的uuid:

如图

这个时候再进入服务器的存档,同样进入playerdata目录,删除这个uuid的文件即可。

这里千万不要删错文件,否则其他玩家的数据会因此丢失的。

至此,存档修复完成,唯一的损失是该玩家的全部数据,后来管理员通过创造模式恢复了其部分物品,虽然结果并不完美,但我们救回了大部分玩家的数据,而且整个过程不超过10分钟,保证了服务器的正常运行。


二、解决思路回顾

查看崩溃报告→发现是玩家数据导致崩溃→分析崩溃前玩家行为→找到对应玩家→删除对应玩家数据→得以保住绝大部分存档


三、后记

本次崩溃后,发现该服务器没有日常备份,也无备份mod,提醒服主装上备份mod后,服务器继续正常运行。