外观
优化
优化是做减法,清理服务器的卡顿因素,由于 Minecraft 本身的性能低下、部分插件作者并没有优化代码的意识、服务器实体过多等。
每个服务器可能有自己的卡顿原因,在这部分先做最基础的通用优化,如果你使用后作用不大请参考性能分析板块。
在此之前,请一定查看 优化误区,停止此类无效"优化",然后根据下面的步骤进行操作。
第一步 - Java 优化
为什么选择 Java 优化作为第一步 - 几乎任何情况下,服务器都会因为合适的 Java 受益,
仅仅需要你下载一个小小的 Java 安装程序,或者更改 JVM 参数(大白话来说就是开服参数)。
选择合适的 Java
参考Java 下载及安装安装合适的 Java
JVM 参数优化
参见 JVM 优化
第二步 - 预生成
什么是预生成 - 预生成就是让服务器在玩家进入之前,预先生成区块对应方块、结构等。
在 Minecraft 服务器中,生成新区块会消耗大量服务器资源,如果要开启新的地图 / 服务器,建议先预生成地图。
Chunky 是最常用的预生成插件。 通常与 ChunkyBorder 结合使用,你可以根据自己的喜好自定义边界及形状。
通常来说,即使你不设置边界,也务必进行预生成大约 1w x 1w 大小的世界。这对降低后期服务器负载很有效。
预生成时应该注意,默认情况 1.20 原版 1w x 1w 的地图需要 4-5 GB 硬盘。应根据硬盘大小选择世界的预生成大小。
第三步 - 更换核心
在插件和配置层面能进行的优化其实不多(受限于 API 还有服务端核心),所以最好的方法是更换服务器核心。
WARNING
任何时候都不要再使用 CraftBukkit 和 Spigot 了。追求稳定/性能上 Purpur ,追求原版特性上 Leaves,性能上 Leaf
选择更换的服务器核心
此处只是作为最基础的核心选择推荐,完整版请查看核心选择
Paper - 追求极致稳定 推荐度 ★★★★☆
如果是第一次开服,或者追求稳定,请使用 Paper 。任何时候想更换其他核心可以随时更换如 Purpur / Leaf 等核心。
Purpur - 稳定性与性能最佳选择 推荐度 ★★★★★
如果你并不是追求更极致的性能,Purpur 你最好的选择,只需要替换掉核心就可以,Purpur 兼容全部插件!!
Leaf - 极致性能 推荐度 ★★★★☆
前往 Leaf 的 GitHub Action 下载最新核心,然后替换!!,Leaf 兼容你的绝大部分插件(已知仅有一个不兼容,但在插件的分支解决)
Folia - 硬件利用率超高的高性能,但兼容性较差 推荐度 ★★★☆☆
如果你的服务器对插件的需求不大,或者你的插件已全部兼容 Folia ,那你就可以选择切换到这个核心,你的 tps 有绝对巨大的提升(甚至超过了 Leaf )
第四步 - 调整服务端配置
目前,Bilibili 上面的配置都是很老的,不推荐使用
文档里的 调服务端配置 比较新,非常推荐
第五步 - 更换硬件
不要无脑换硬件! 首先要知道自己的硬件瓶颈在哪里。如果 CPU 负荷过高,建议先排除 CPU 异常占用,再看 CPU 总体占用情况。 一般来说服务器卡顿换 CPU 是最有效的,单核性能和 MC 服务器 TPS 几乎呈线性相关,但是换 CPU 几乎就相当于要换一台机器,迁移对于新手来说并不是易事。
对于单端服务器来说,超过 8 核心的部分基本很难通过提升 CPU 核心数量提升 TPS 。不要动不动就买 E5 然后卡了就加 4 核 8G 内存,更多也没用的。
对于群组服务器来说,一般核心数量都会占用上,但是内存可能会有些捉急,对于每一个普通的生存服来说内存的推荐值为 8G - 20G 更多更少都是不推荐的。
WARNING
如果发现 CPU 占用和内存占用都不是很高但是服务器卡卡的,请考虑是不是服务器带宽受限导致玩家 ping 值突然升高的问题。请分清楚 TPS 低导致的卡顿,MSPT 高导致的卡顿,带宽占满导致的卡顿。
第六步 - 更换操作系统
无论在性能还是稳定性, Linux 都比 Windows 更适合用于开服,对于 Linux 根据自己的使用经验选择即可,如果没有使用经验可以先使用 Ubuntu 等主流系统。
如果想要了解更多请前往进阶 Linux 开服教程
第七步 - 性能分析
“马克思主义活的灵魂在于对具体问题作具体分析。” - 列宁
通用优化已经差不多做好了,而每个服都有自己导致滞后的因素,可能是实体太多,可能是玩家机器多,也可能是某些插件写的太屎...
如此,那么应该如何知道服务器为何卡顿呢?
如果你是个完完全全的新手,或者懒得分析,想请教别人分析应该怎么办呢? 请转跳到 怎么让大佬帮我
如果你不想求助别人,亦或者你想有一些进步,请参考 性能分析