关于香草大洲优化


概述

挑战在于,通过本地复制Minecraft的公共多服务器香草大陆的环境并尽可能地对其进行优化,可以实现多大的稳定性。没有获得香草大陆管理团队的许可。这是个人爱好。

环境

OS

Windows10主页

开始bat

java -jar -Xmx7168M -Dfile.encoding=utf-8 paperclip-605.jar

数据库

MariaDB,以方便使用XAMPP。
我还没有确定香草大陆是MySQL还是MariaDB。

1
2
# mysql --version
mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for Win64 (AMD64)

记忆体

7GB分配
似乎大陆在32GB中分配了15GB(请参阅非官方Wiki,旧信息,现在可能有所不同),但这是限制,因为我的PC只有16GB。

尝试

好吧,我尝试了一些

尝试重现

  • 服务器
    PaperSpigot版本605(1.13.2)
  • 插入

<表格>

插件名称

版本


<身体>

CoreProtect

2.16.3

dynmap

3.0-beta-3-160

WorldEdit

1.13.105

Morkaz Sk

1.2

ColoredSigns

2.2

Skript

2.3.6

要点

2.16.1.154

ClearLag

3.0.3

ArmorStandEditor

1.13-21

goBrush

2.0

skDragon

0.14.999

椅子

5.0

测试(用于验证的自制PL)

1.0快照

SkQuery

3.6.4

世界边界

1.9.0

LWC

2.1.2-dd8c289

验证符

1.9

ConsoleSpamFix

1.6.2

PowerNBT

0.8.9.3

Multiverse-Core

3.0.0-SNAPSHOT-b760

WorldGuard

7.0.0-beta-03; e51a220

SK-NBeeT

2.3.0

公民

2.0.25-SNAPSHOT(内部版本1669)

前哨

1.8.5(内部版本242)

FastAsyncWorldEdit

1.13-breaking

skRayFall

1.9.15

LunaChat

2.8.9

骨架

2.2b

PermissionsEx

1.23.4

skUtilities

0.9.2

Essentials Spawn

2.16.1.154

UndineMailer

1.8.1

WorldEditSelectionVisualizer

1.6.5

SharpSK

1.6.3

MC禁令

4.4.4

SkUniversal

2.6

WarpPortals

5.6.3

Skellett

1.9.6b

TuSKe

1.8.2-Pikachu-IronApollo-Patch-4


(上面的列表仅为此在一分钟内编写了该插件,因为将已安装的版本制成表格是令人讨厌的烦恼。)
此外,公民有付费版本和免费版本,但是这次我仅将免费版本用于验证。 (功能上没有区别。为保持动力,我希望您尽可能使用付费版本。)

尝试暂时将其启动

我准备了上述环境,并获得EULA同意,并暂时启动了该环境。由于包含MCBans等,因此我知道它不会一口气启动。但是...
image.png
ClearLag,一个可通过收集掉落的物品并定期清除小怪(在香草大陆上可能已禁用)来减少滞后的插件,会产生错误并且不能乖乖地启动。 java.lang.IllegalArgumentException: Collection is empty是否表示无法读取配置文件中的必需项目?
→由于用以下货叉替换了它,所以它在我不知情的情况下消失了。

另外,image.png
NBT编辑插件PowerNBT还在启动时调用的指令上引发了错误。
考虑到java.lang.RuntimeException: no such method及其下面的源,似乎它无法使用称为反射的功能直接访问服务器程序。不推荐使用此方法,每次升级版本都必须重写此方法,因此在1.13.2中安装1.12.2插件时会发生此方法。此插件似乎已停止在1.12.1中进行更新,因此似乎正在发生此错误。
经过一点搜索的结果,我发现此插件的fork似乎支持1.13.2,因此我将在此处替换它。
借来的叉子:https://github.com/steakteam/PowerNBT/releases
现在,Power NBT错误消失了。
头家族似乎不支持名为TuSKe的插件,因此我用叉子代替了它。
借来的叉子:https://github.com/IronApollo/TuSKe/releases

以上工作的结果image.png
名为WarpPortals的门户网站插件会引发一些错误(由于该插件的stats集合部分没有问题,因此被忽略),但已确认可以启动其他插件而不会出现问题。这次是再现环境。

所以

由于在上述启动状态下暂时未使用该数据库,因此应将其设置为尽可能接近香草大陆的环境。
image.png

CoreProtect和Modern LWC现在保存在MariaDB中。 Dynmap还支持MySQL(MariaDB),但是由于没有证据表明它已保存在MySQL中,因此在复制阶段将其省略。

而且,在香草大陆上有9个正常世界,5个虚空,5个重置世界和事件世界(据我所知)。
因此,即使在这种验证中,也只会准备好这些世界的数量。 (世代还不够,因为PC的规格无法承受。)
image.png
(我删除了rimokko,因为后来我记得Rimokko是世界名称"世界")

让我们来衡量一下目前的情况

启动时间:1分36秒
它由Essential的/ memory命令测量。
image.png

优化

我将尝试从上述复制环境中优化各种内容。

PaperSpigot版本更新

更新为

626

删除Skript插件

Skript系统以笨重而著称,因此将其删除,并且由Java / Kotlin等插件实现这些功能所实现的功能以减轻重量。

将PermissionEx迁移到LuckPerms

PermissionEx已经开发出来,根本无法期待将来的优化,并且对安全性也没有好处,因此我们将转向LuckPerms。

目前,尝试测量直至此处

启动时间:1分28秒
image.png
可用内存随着插件数量的减少而增加。

我试图将Dynmap更改为MySQL

image.png
MySQL消耗更多的内存,但是IO更快。

更换翘曲的传送门(这次未完成)

WarpPortals是一个旧的插件,尽管它不能与1.13.2一起使用,但不能保证它将来可以使用,因此我认为您应该考虑替换它。

结论?考虑

Skript不是与大鲭鱼

一起使用的插件

Skript在文本文件中描述其内容,因此IO需要时间。
另外,安装的扩展插件越多,消耗的内存就越多。
如果您想使用Skript实施并编写插件,则该插件具有较高的自由度,例如优化,并且您可以做很多事情,因此,如果没有特殊原因需要Skript,最好使用我认为(这是我的看法。如果您有任何异议或建议,请发表评论)。
另外,在实现分布式插件的组合时,应该考虑一下,因为如果数量太大,它不会改变。

停止PermissionEx

从开发结束到现在已经一年半了,所以让我们停止它。

关于鲭鱼放

最近,在香草大陆,鲭鱼滴一天可能发生多次,但是在此验证中,由于服务器启动时间很短,因此无法再现鲭鱼滴,其原因是未知。
我考虑了很长时间启动并进行验证,但是由于随身携带PC的方便性,我不能这样做。

考虑引入反向代理

有一个反向代理,可以通过将另一台服务器夹在服务器和播放器之间来减少服务器的负载或充当DDoS的防护。
在原始大陆上,DNS当前直接定向到服务器,因此非常容易受到攻击,因此,我认为您应该考虑引入反向代理。

关于OS

假设已安装32GB内存,我认为15GB分配会给操作系统带来太多内存。
只要操作系统是Windows,就无济于事,但是通过将操作系统更改为Windows Server或Linux(CentOS等),可以减少操作系统占用的内存,并且可以将内存分配给服务器数量增加,并且使用Linux,在这种情况下,您可以获得比Windows更详细的信息,例如内存使用率和CPU使用率。
如果您有可以处理Linux的人,则应该使用Linux。 (低优先级)

最后

香草大陆的所有者,特别是鲭鱼的所有者Tama先生,尽管他定期管理服务器,但还是喜欢写这样的内容,请原谅我并继续做我的事情最好操作服务器。

加法或更正

2019/5/28

已更正,因为已在Twitter上指出它将产生误导。
还澄清了这是作者的意见。