服务器从1.20.2升级1.20.4后,保存玩家数据花费了太多的时间(保存区块也类似),并且耗时在200ms-3000ms不等,导致服务器时不时卡顿。
而且问题似乎只出现在保存NBT文件,因为测试了更大的玩家成就数据.json文件,没有表现出明显的卡顿。
具体检测输出
输入/save-all来保存数据(包含区块保存和玩家保存):耗时326.4 ms
玩家退出游戏(包含玩家保存):耗时267.98 ms
输出的spark结果(**这段时间屏蔽外网了,所以只能提供文件附件)
profile-2023-12-30_10.36.59.sparkprofile.zip
(12.03 KB, 下载次数: 0)
/save-all的耗时
退出的耗时
服务器信息(看起来硬盘一切正常)
其他说明
在服务器上测试过Paper1.20.4和Paper1.20.2,后者没有问题
在服务器上测试过Paper1.20.4和Spigot1.20.4,两者都有问题
在自己电脑上测试过Paper1.20.4,没有出现问题(至此表现出玄学的迹象)
其中测试用的服务端只有spark插件,且未修改服务端配置,包括世界都是用的一样的,也就是说除了核心换了版本外一模一样。
多次测试也都表现出一样的情况。
测试用的玩家存档文件并不是全新的,而是从生产服务器上扒下来的。
①用全新的存档检测不出来卡顿
②使用NBT EDIT删除如图所示的NBT值后,也检测不出来卡顿
(但是如前面所说的,相同的存档在1.20.2没有任何问题,在我自己电脑上也没任何问题)
只有有人能提供任何有用的信息,能成功定位到问题的原因(不需要解决,当然能直接解决就再好不过了),就可以选为最佳。
而且问题似乎只出现在保存NBT文件,因为测试了更大的玩家成就数据.json文件,没有表现出明显的卡顿。
具体检测输出
输入/save-all来保存数据(包含区块保存和玩家保存):耗时326.4 ms
玩家退出游戏(包含玩家保存):耗时267.98 ms
输出的spark结果(**这段时间屏蔽外网了,所以只能提供文件附件)
/save-all的耗时
退出的耗时
服务器信息(看起来硬盘一切正常)
其他说明
在服务器上测试过Paper1.20.4和Paper1.20.2,后者没有问题
在服务器上测试过Paper1.20.4和Spigot1.20.4,两者都有问题
在自己电脑上测试过Paper1.20.4,没有出现问题(至此表现出玄学的迹象)
其中测试用的服务端只有spark插件,且未修改服务端配置,包括世界都是用的一样的,也就是说除了核心换了版本外一模一样。
多次测试也都表现出一样的情况。
测试用的玩家存档文件并不是全新的,而是从生产服务器上扒下来的。
①用全新的存档检测不出来卡顿
②使用NBT EDIT删除如图所示的NBT值后,也检测不出来卡顿
(但是如前面所说的,相同的存档在1.20.2没有任何问题,在我自己电脑上也没任何问题)
只有有人能提供任何有用的信息,能成功定位到问题的原因(不需要解决,当然能直接解决就再好不过了),就可以选为最佳。
那你有没有试过在服务器直接用1.20.4保存1.20.4的数据呢?直接去1.20.4模拟一份类似的存档数据
另外,还有一个猜想,仅仅是猜想,就是新版的保存会不会与外网连接有关
另外,还有一个猜想,仅仅是猜想,就是新版的保存会不会与外网连接有关
你可以先把存档保存下来,转成你想要的那个版本,然后再装进服务器,你可以试一下,我不保证能行
是控控吗 发表于 2023-12-30 11:21
那你有没有试过在服务器直接用1.20.4保存1.20.4的数据呢?直接去1.20.4模拟一份类似的存档数据
另外,还有 ...
使用/advancement grant KioProject everything模拟了一份类似的存档,延迟的问题依旧存在
文件更大了,保存更慢了
我之前也怀疑过是网络导致的,但是在网络恢复前没法确定。
(而且保存文件会和网络有关这件事,怎么想都感觉可能性太低了)
跟网络没关系,saveall分为三个步骤:玩家数据保存,玩家统计数据保存,玩家成就信息保存。
我刚才下载了1.20.2和1.20.4版本的paper,对相关代码进行了对比,发现后两者,即玩家统计数据保存和玩家成就信息保存部分的代码完全一致,只有玩家数据保存部分存在细微差别。
另外我对spigot进行了查看:
因此确定,这是两个版本中数据保存部分唯一的差异。
但我并没有对相关内容进行实际性能测试,希望我的查找可以帮助到你。
我刚才下载了1.20.2和1.20.4版本的paper,对相关代码进行了对比,发现后两者,即玩家统计数据保存和玩家成就信息保存部分的代码完全一致,只有玩家数据保存部分存在细微差别。
另外我对spigot进行了查看:
因此确定,这是两个版本中数据保存部分唯一的差异。
但我并没有对相关内容进行实际性能测试,希望我的查找可以帮助到你。
我制作了一个脚本,用于将1.20.4的保存玩家数据方法回退至1.20.2。
安装NeigeItems
https://github.com/ankhorg/NeigeItems-Kotlin/releases
下载"PlayerDataStorage#save回退版本.zip"
PlayerDataStorage#save回退版本.zip
(1.28 KB, 下载次数: 0)
解压"PlayerDataStorage#save回退版本.zip",获取"PlayerDataStorage#save回退版本.js"
将"PlayerDataStorage#save回退版本.js"放入"plugins/NeigeItems/Expansions"文件夹
后台或OP输入指令/ni reload
完毕
如上述操作后,你服务器中用于进行玩家数据保存的方法应该被设置为1.20.2的逻辑,你可以安装后尝试是否有改善。
安装NeigeItems
https://github.com/ankhorg/NeigeItems-Kotlin/releases
下载"PlayerDataStorage#save回退版本.zip"
解压"PlayerDataStorage#save回退版本.zip",获取"PlayerDataStorage#save回退版本.js"
将"PlayerDataStorage#save回退版本.js"放入"plugins/NeigeItems/Expansions"文件夹
后台或OP输入指令/ni reload
完毕
如上述操作后,你服务器中用于进行玩家数据保存的方法应该被设置为1.20.2的逻辑,你可以安装后尝试是否有改善。
Neige 发表于 2023-12-30 13:03
我制作了一个脚本,用于将1.20.4的保存玩家数据方法回退至1.20.2。
安装NeigeItems
https://github.com/ank ...
非常感谢,但是因为我服务器现在没法连接外网,所以无法加载此插件
但是我自己编译了服务端,把相关代码改回了1.20.2的,发现这个问题确实被解决了
tcejorPoiK 发表于 2023-12-30 13:34
非常感谢,但是因为我服务器现在没法连接外网,所以无法加载此插件
但是我自己编译了服务端,把相关代码 ...
这个丢服务端根目录就行了,这是minecraft的语言文件()
Neige 发表于 2023-12-30 13:03
我制作了一个脚本,用于将1.20.4的保存玩家数据方法回退至1.20.2。
安装NeigeItems
https://github.com/ank ...
追踪到问题了,1.20.4保存文件强制同步写入系统,把同步去除就行了。
GM7000的无缓2k和4k写入太慢了
对比我自己电脑的
也许这个问题的答案就是:该换硬盘了
tcejorPoiK 发表于 2023-12-30 14:06
追踪到问题了,1.20.4保存文件强制同步写入系统,把同步去除就行了。
合理()