Hanssc
本帖最后由 Hanssc 于 2021-8-30 12:38 编辑

0.前言

论坛中现有的帖子大多数是针对服务端选择,服务端配置,等等底层的方式谈论的服务端优化。然而在实际服务器运行过程中,绝大多数服务端TPS下降的直接原因都和插件有关。

因此这一篇易于理解的服务端插件选择的服务端优化教程就来了。本教程中所有插件的说明将会被分为三部分,综合推荐指数,分块推荐指数,原因。其中综合推荐指数满⭐为⭐⭐⭐⭐⭐,不要问我为什么没有0⭐,因为最低1⭐就是不推荐使用;分块推荐指数分为 性能/实用性/支持,每部分满⭐为⭐⭐⭐⭐⭐,原因中会详细介绍为何如此评价。

本帖的应用前提是你已经使用了paper或者paper fork的服务端,关于服务端推荐不是本贴重点,顺带一提,推荐使用Ariplane, Purpur, paper , tunitity(已并入paper)。不推荐使用Yapotia之类的所谓“高性能服务端”,这类服务端不但性能低,而且稳定性还很差。

本帖主要针对 高版本1.16+ 服务端

本人在2014~2018年1月运行了~4年的某服务器(中间有过模组服也有过纯净服),积累了较多的Bukkit/Spigot的使用经验,我们服也是国内最早使用Slimefun的几个之一,当年还是Slimefun2,后面弃坑。2020年又回归这个圈子,最近可能回归开服,已经很久没在论坛发帖了,我这个号还没发过教程类的帖子


1.优化插件
如果你是小白,那么不建议你安装任何优化插件,因为不恰当的配置会让你的服务器卡上加卡。

先说原理,一般的优化插件都是通过定期清理怪物,清理高红石,清理掉落物来减少实体达到优化的目的

原理1-定期扫地
扫地这个功能很鸡肋,在以前老版本的时候,掉落物确实会卡服,掉落物会合并进行合并。有这种插件不但会增大你玩家损失道具装备的风险,还对性能几乎没有任何帮助。如果你想调整掉落物在一定时间后消失(区块要保持加载),可以调整spigot.yml中的
  1. item-despawn-rate: 3000
  2. arrow-despawn-rate: 300
  3. trident-despawn-rate: 1200
  4. merge-radius:
  5.   item: 4.0
  6.   exp: 6.0
复制代码
如果你想针对某一种掉落物,比如原石,修改消失的时间,可以在paper.yml调整

  1.     alt-item-despawn-rate:
  2.       enabled: true
  3.       items:
  4.         COBBLESTONE: 300
复制代码

原理2-生物合并/清理
这种方式并不会对性能有帮助,甚至会让你服务器更卡。高版本中怪物生成机制决定了这个,如果你将怪物清理或者合并,那么意味着怪物减少,这将会让更多的怪物产生。在刷怪笼/刷怪塔少的服务器中,这个优化是否有效值得质疑。

原理3-高频红石定期检测
这种方式可以检测高频红石,大多数插件使用了一个同步的Task,定期执行达到检测的目的。如果你的服是建筑服/rpg服,那么这是浪费性能。如果你是生存服,那或许有一点用。paper端使用了快速红石use-faster-eigencraft-redstone: true “这个会修改原版红石逻辑,某些情况会导致红石死锁”,高频红石如果不涉及大量方块的修改那将不会对性能有明显的影响

原理4-Physics限制/优化
这种方式在一定程度上对性能有着一定的帮助,比如React的fast leaf decay。

原理可能不止以上这些,这些只是举例。

React
综合推荐指数:⭐⭐⭐⭐
分块推荐指数:
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐
  • 支持:⭐

原因:React曾经是Spigotmc的老大级优化插件,但是现在作者几乎不维护了)(去搞Iris了貌似),Discord也很冷,估计是忙某世界生成器插件去了。虽然作者说了“Someone else was maintaining it for a while (I, cyberpwn, have just gotten back into working on it)”但也没见最近有啥更新。这款插件在1.13(及以下)有非常好的口碑,基本上是必备的优化插件。有些功能能明显起到优化的作用。
但是因维护问题,高版本nms问题,不推荐(1.16+)

LagAssist
综合推荐指数:⭐⭐
分块推荐指数:⭐⭐
  • 性能:⭐⭐
  • 实用性:⭐⭐
  • 支持:⭐⭐

原因:LagAssist是spigotmc上一款付费的优化插件,这款插件作者称“12 IN 1” 包含各种优化插件的功能。实际上其功能原因达不到这12个插件的,甚至作者可能自己都没搞清楚React是什么。综合上来说这款插件的区块分析,Lag检测等确实在卡顿时能用于排查原因,高频红石检测也不错。但是其余功能,比如Mob Culler,Entity Stacking都是完全无用 或者说负优化的功能。


Mob Farm Manager
综合推荐指数:⭐⭐⭐
分块推荐指数:⭐⭐
  • 性能:⭐⭐
  • 实用性:⭐⭐⭐
  • 支持:⭐

原因:Mob Farm Manager的主要功能是限制区块中的生物的插件。这能很好的解决密集实体卡服的问题(刷怪笼/刷怪塔)。挺好用的一款插件。但是由于是同步检测的,对性能是有影响的。具体视情况而言选择。


Laggremover
综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:Laggremover是一款很老的优化插件,主要是通过控制区块卸载等方式来达到优化的目的,对于高版本1.12.2+来说是负优化,作者也已经不再维护

Neverlag
综合推荐指数:⭐⭐
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:Neverlag是一款老牌的优化,修复插件。本人在1.6~1.8时代时开服必备,jongjonger开发。虽然好用,但也不建议使用,这是一款年久失修的插件,该插件修复的全部bug在高版本都已被mojang修复,没有安装的必要,同时扫地大妈功能也不推荐使用。

Ptweaks
综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:年久失修,应该不会还有人在用这个吧?

Yasui
综合推荐指数:⭐⭐⭐
分块推荐指数:⭐⭐⭐
  • 性能:⭐⭐⭐
  • 实用性:⭐⭐
  • 支持:⭐⭐⭐

原因:目前还在
更新,据说效果较好,测试后进行评分。部分功能效果不大,见原理-2

Clearlag

综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:几乎不会对提搞你的TPS有任何帮助,作者也不维护了。



2.基础插件
基础插件一般是每个服务器必备的,合理选择基础插件,不但对游戏基本功能玩法有帮助,更对性能有帮助。

EssentialsX
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:EssentialsX是Essentials的后续,有较大的社区开发和支持,BUG也能及时得到修复,作为基础插件最好不过。

CMI
综合推荐指数:⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:⭐⭐⭐

原因:CMI是spigotmc上一款付费插件,CMI相对于EssentialsX有更多的功能,但是由于是收费闭源插件,有众多的BUG还是等待修复的状态,很多人因为bug问题在到处喷这款插件,如果你追求功能,可以使用,如果追求稳定性,建议还是选择EssentialsX。性能上EssentialsX比CMI略好。Github上有issuetracker进行支持,支持不如EssentialsX。(我是用CMI的)


其他如Mainmc
综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:大多数这类插件作者都是凭着一时兴起写的,不会长期维护,bug也可能比较多,性能也不一定好,不推荐使用。





3.创世神类

WorldEdit
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:稳定性最好,其他创世神都是WorldEdit的fork
FastAsyncWorldEdit
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:PlotSquared作者开发的开源异步创世神,性能+++,稳定性和兼容性---,在你使用PlotSquared插件时使用FAWE的话会大服提升你地皮世界生成速度(改用FAWE生成)同时FAWE还增加了一些WorldEdit没有的功能。如果你要进行大版本升级,或者mojang刚升级大版本后建议等待一段时间再升级,因为这时候FAWE的构建版非常不稳定,很--。Github & Discord很活跃,你的问题能很快得到解答。

对CraftBook5兼容性不是很好,如果要使用CraftBook5请谨慎考虑

AsyncWorldEdit
综合推荐指数:⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐
  • 支持:⭐⭐

原因:分为氪金版和不氪版本,不是非常推荐,但也不差,稳定性比FAWE好一点,性能和支持都不如FAWE。如果追求稳定性可以选择WorldEdit




4.反作弊类

AAC
综合推荐指数:⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:⭐

原因:以前小游戏服几乎必备的插件,作者更新不如以前频繁了属于是inactive状态中,不建议高版本使用。

Spartan
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:非常好用,误报率低,作者支持好,性能在反作弊插件里较好,更新频繁,兼容很多其他插件。


Matrix
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:国产,某知名小游戏服曾经使用,可与Spartan一较高低。如果你开小游戏服可以选择该插件。





5.权限组类

Luckperms
综合推荐指数:⭐⭐⭐⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:⭐⭐⭐⭐⭐

原因:目前最好的权限组插件,没有之一,用户交互界面友好,性能高,跨服同步优良,数据存储多样,逻辑型强。不像Groupmanager一样容易把自己绕进去。如果你不会用,那么只需要记住一个指令/lp editor 即可完成全部权限的编辑。Tab补全也很好用,还能检测需要的权限。

Groupmanager
综合推荐指数:⭐⭐⭐
分块推荐指数:⭐⭐⭐
  • 性能:⭐⭐⭐⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:⭐

原因:(在1.8时代前最常用的一款权限组插件)EssentialsX开发团队自己都不推荐使用该插件了。那么你为何还用它呢?不支持限时权限,跨服同步等等

其他
综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:不推荐使用诸如PEX之类的已经弃坑的插件




6.需考虑的插件
基于Lore检测的插件
综合推荐指数:⭐⭐
分块推荐指数:⭐⭐⭐⭐⭐
  • 性能:⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:❓

原因:基于Lore检测来提升玩家属性是一种低版本(1.12以前)的方法,老牌的插件如RPGItems就是用这种方法达到的,这种方法有较高的自由度但是会极大的影响性能,比如你每用刀打到一次实体,就要对全部Lore在进行Regix处理。当你的装备(武器+盾牌+4个衣服)超级NB,有几十行Lore的时候,这时候每次攻击将会处理几百行lore。性能会受到超大影响。比如某量子RPG,某loreattrubite类。建议使用MMOItems一类的插件(顺带一提,低版本Slimefun也是检测lore和display的,性能也很垃圾)这种插件的唯一好处就是自由度更高,可以通过简单修改lore来获得属性。


自定义怪物类
综合推荐指数:⭐⭐⭐⭐
分块推荐指数:
  • 性能:⭐⭐
  • 实用性:⭐⭐~⭐⭐⭐⭐⭐
  • 支持:❓

原因:推荐使用Mythicmobs而不是其他比如Boss之类的,mm有更多人维护,有更好的支持,也是经过了很多年开发的老牌插件。


原版BUG修复类插件
综合推荐指数:⭐⭐
分块推荐指数:
  • 性能:❓
  • 实用性:⭐⭐
  • 支持:❓

原因:你只要保证你使用的paper最新版,几乎可以避免原版的任何bug。IllegalStack之类的插件完全没有必要,完全是浪费。

盔甲架特效/自定义模型类
综合推荐指数:⭐⭐
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐⭐⭐⭐⭐
  • 支持:❓

原因:比如model engine这类插件,虽然这类插件给你带来较高的自由度,但是这类插件是通过动态操纵盔甲架来实现功能的,这类插件性能普遍不高,不推荐大型服务器使用。(model engine 最新版实验功能有部分异步,未经测试,不予评价性能)

菜单类
综合推荐指数:⭐⭐⭐⭐
分块推荐指数:
  • 性能:❓
  • 实用性:⭐⭐
  • 支持:❓

原因:推荐使用Deluxemenu,其余的比如BossshopPro,Trmenu,
ChestCommands已由社区维护/他人维护/不再开发/开发者不活跃。Deluxemenu是一款维护了8年以上的老牌插件,推荐使用。“按照某人说法,建议新手用ChestCommands,上手容易”Trmenu重置版也是一个不错的选择

世界生成器类
综合推荐指数:⭐⭐⭐
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:❓

原因:使用自定义的世界生成器确实会让你的服务器逼格大涨,但是这类生成器的性能一般都很低。(大多数不到原版的 1/4 速度)如果你硬要使用,本人用过RWG,
Iris和Terra。这里推荐你Iris/Terra/TerraformGenerator,不建议使用EWG RWG等剽窃代码的插件。Terra有着非常好的自定义性和性能,但有着很高的学习门槛,而Iris门槛比Terra低一些。随说性能低,但你可以通过chunky worldboarder等预加载地图来大大减少这类情况导致的卡顿。任务类
综合推荐指数:
分块推荐指数:
  • 性能:❓
  • 实用性:⭐⭐⭐⭐
  • 支持:❓

原因:推荐使用QuestCreator,用过不但性能最好(绝大多数都是异步操作),而且自由度最高的任务插件,只是对新手小白不友好,非常难配置,没有examples,wiki不详细
。其余任务类Quests,BetonQuest都大同小异

随机传送类
综合推荐指数:⭐⭐⭐
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:❓

原因:随机传送导致的TPS下降主要原因为:寻找安全着陆点/区块生成加载。前者造成的性能损耗几乎无可避免,后者可以通过对区块进行预加载(chunky等)来进行减小,这里推荐BetterRtp,在本人的建议下,作者使用PaperLib在对玩家传送之前预先对全部周围区块进行异步加载由此可以减小第二项(区块生成)带来的性能损耗。

区域保护类
综合推荐指数:⭐⭐⭐
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐⭐⭐⭐
  • 支持:❓

原因:如果追求性能,这里不推荐Residence,这款插件有很多人在disscussion和作者抱怨性能问题,但是国内玩家似乎只能接受这一款插件,因历史原因,大多数玩家只会这一款插件的指令。这里推荐不需要圈地,但又要保护世界之类的服主选择WorldGuard。这款插件可以任意世界禁止建造,tnt爆炸,飞行等等等等。能满足一切需求。(不建议装NoBuild之类的鸡肋插件,要是某些插件能破坏地形,如果该没call BlockBreakEvent,这个很可能报废,WorldGuard兼容性是最好的),保护可以使用GriefPrevention Land 等其他插件
时间不变(永夜,永远白天)/不下雨/死亡不掉落/不出现死亡界面/...
综合推荐指数:
分块推荐指数:
  • 性能:⭐
  • 实用性:⭐
  • 支持:⭐

原因:请学习gamerule后再搞事,别装一些正常人不用的插件(有些人提到 你会忘记gamerule 看完本帖你还会忘记吗?)


7.其他不推荐使用的插件
  • ChatControlPro/Red/???Yellow (我买了,作者跑路去mc-market上出Red,要你重新买,不知道以后会不会有Yellow,Green,White,Gray,还在更新里夹带私货广告,以至于被md_5封禁了,某个版本的ChatControlPro也被人举报‘后门’但是作者出了个可以让你手动关闭的选项)
  • EpicWorldGenerator 抄袭其他免费mod中世界生成器的源码
  • RealisticWorldGenerator 同上
  • MySQL Player Data Bridge(*) 有一些BUG,可以刷东西(很多bug本人测试后有效,详情见spigotmc),作者不予以支持修复(基本上这插件就着版本更新,只是向上兼容了而已),但是目前没可靠替代方案。
  • Yum 影响性能。此外 注意不要从第三方源下载插件,如yum插件的仓库,这会有一定的安全风险。
  • AdvancedEnchantments 太多Bug,又贵又难用,我买了10分钟,就发现4个让你服更本没法用的bug 见其github issue tracker#2277 #2278 #2279 #2280 。后续我接着测试了一下,随便用用都是bug,已经懒得去github反馈了
  • Quantumrpg V 5 (now PRORPG) 作者已跑路,该插件属于lore检测类,性能很低,不推荐
  • Pro系列插件 作者spigot页面 代码很烂,BUG众多(Review里看到过曾经的知名大服的服主(比如? jiongjionger )的差评,作者在spigotmc上也被喷了)
  • 待更新


8.常见误区

误区一:MySQL储存一定比文本(yml)和SQlite性能好

有人说出这种话是因为一般而言使用MySQL存储的插件都会异步进行SQL操作,而其余io操作很多插件中不进行异步操作,以导致主线程阻塞。其实性能关键取决于你的磁盘速度/MySQL如果不在本地还有网络延迟。



误区二:异步一定比同步性能好

其实不一定,这取决于很多因素。

误区三:氪金插件一定比开源插件好

各有好处,氪金插件一般支持不如大型开源插件/程序,氪金插件基本上是只由作者一人维护,而开源插件由社区维护,基本上你只需要在github上发一个issue或者在Discord上说一句就会有很多人回复你。


Appendix.建议

一:本地MySQL请关闭ssl

本地假设的MySQL服务器没有任何风险,无需开启ssl加密,关闭ssl,对于MySQL有一定的性能提升 见:CSDN参考

二:最大内存控制得当

不建议给单端分配超过12G内存(待编辑)



F.后记
写了半天只是有一点指导作用,帮助大家排坑,选择正确的插件,最关键还是需要Timing报告和Spark报告,才能准确分析出卡顿的原因。
本帖不存在对任何开发者的不尊重,楼下提到“本帖是针对Zrips”,本人和Zrips在spigotmc上有过conversion交流,本帖中提到的另一个Chatcontrol的作者,我与他在spigotmc上也有交流,他还免费赠送了我CoreArena。


更新记录



本帖还正在编辑中...
如有异议楼下提出,本帖会尽可能修改有问题的部分...
请勿断章取义

贺兰兰
1. use-faster-eigencraft-redstone 这个会修改原版红石逻辑,某些情况会导致红石死锁
2. Yasui 现在仍在更新,并且效果是极佳的,但前提是你修改了默认配置
3. FAWE 和 AWE 是各有好坏的,不能踩一捧一。FAWE 虽然异步操作速度快,但会产生严重的区块和光照问题,一旦出问题区块基本就报废了;AWE 虽然速度慢点,但至少是稳定的

其他地方,讲的都挺不错

Hanssc
贺兰兰 发表于 2021-8-14 19:35
1. use-faster-eigencraft-redstone 这个会修改原版红石逻辑,某些情况会导致红石死锁
2. Yasui 现在仍在更 ...

行,我稍微修改下

浪子星辰
写的真的非常不错,我详细看完了的,就是还是想问一下,1.16.5的paper插件服如何提高tps呢?我服务器一到20人以上就开始疯狂掉tps,一直要掉到8左右,就非常的影响体验,能推荐推荐优化插件吗?

Cast1e
浪子星辰 发表于 2021-8-23 16:45
写的真的非常不错,我详细看完了的,就是还是想问一下,1.16.5的paper插件服如何提高tps呢?我服务器一到20 ...

高版本优化靠插件基本是没用的,可以考虑换个优化好,高性能的服务端核心,比如purpur,tuinity。然后通过配置启动参数,改服务端yml配置来优化

浪子星辰
Cast1e 发表于 2021-8-24 18:33
高版本优化靠插件基本是没用的,可以考虑换个优化好,高性能的服务端核心,比如purpur,tuinity。然后通 ...

好吧,谢谢了

Hanssc
浪子星辰 发表于 2021-8-23 16:45
写的真的非常不错,我详细看完了的,就是还是想问一下,1.16.5的paper插件服如何提高tps呢?我服务器一到20 ...

和人数没必然关系,没timing无法分析

可爱小天空
这里非常不建议ChestCommands,已完全无人开发。

https://dev.bukkit.org/projects/chest-commands/files/3102957
最后更新:2020 年 11 月 6 日 并且完全支持1.17
不知道你是如何得出完全无人开发的结论的

Hanssc
可爱小天空 发表于 2021-8-29 11:34
https://dev.bukkit.org/projects/chest-commands/files/3102957
最后更新:2020 年 11 月 6 日 并且完全支 ...

https://github.com/filoghost/ChestCommands

不说无人开发吧 ,可以说开发者不活跃。

夏日冰熊
本帖最后由 南外丶仓鼠 于 2021-8-29 13:38 编辑

为什么我评分您的文章主观性过强?本回复基于您给出的背景,即1.12+Paper及其延伸服务端
  1. <span style="background-color: rgb(255, 255, 255);">本帖的应用前提是你已经使用了paper或者paper fork的服务端</span>
复制代码
0.关于前言

1.第一部分中您指出的大量观点并没有拿出任何数据证明,甚至有一些观点是错误的


2.您对举例的付费插件评价均较低,与其实际质量并不相符(仅陈述事实,例如React、MFM、CMI、AWE、AAC)


3.错误地推荐插件与说法不当之处


综上,我认为您整篇教程存在大量bug(包括但不限于以上),需要进行大量整改。
本人在2014~2018年1月运行了~4年的某服务器(中间有过模组服也有过纯净服),积累了较多的Bukkit/Spigot的使用经验,我们服也是国内最早使用Slimefun的几个之一,当年还是Slimefun2,后面弃坑。2020年又回归这个圈子,最近可能回归开服,已经很久没在论坛发帖了,我这个号还没发过教程类的帖子

恕我直言,2014-2018的开服经验看起来对本教程并无任何作用,当时高版本都没出(除了1.12)。
而且你刚回归这个圈子,为什么要急于求成呢?你才开服,为什么批评其他教程帖呢?
我认为您整篇文章的论调:
1.毫无理论和数据支持
2.什么插件老就是什么好
3.你自己用什么插件就是什么好
4.zrips的都是垃圾
5.付费插件都是垃圾



@贺兰兰





第一页 上一页 下一页 最后一页