Blog · blog
Minecraft 服务器最佳性能优化模组
服务器端延迟与客户端帧率是不同的问题。使用纸张或 Purpur,调整 JVM 标志,预生成区块,以及合理的视野距离设置,通常可以解决大部分问题.
服务器延迟与客户端延迟是两码事
客户端指南通常会讨论 FPS:你的 GPU 绘制的帧数。服务器性能是完全不同的指标,即每秒的滴数(ticks per second),衡量服务器每秒执行完整游戏循环的次数。当 TPS 降至 20 以下时,所有连接的玩家都会感受到回弹、延迟命中以及怪物滞后于实际位置,无论任何玩家的 PC 性能多么强大。解决这个问题完全取决于服务器端的连接。
这个区别很重要,因为这两个问题经常被混淆。即使本地 FPS 达到 300,玩家仍然会感受到运行在 12 TPS 的服务器,而任何客户端修改都无法改变这一点。如果你运营一个服务器,尤其是一个繁忙的小游戏大厅,例如 BedWars 或 SkyWars 竞技场不断重置,那么以下优化措施才是你投入时间的回报。
选择专为负载设计的服务器软件
原版 Minecraft 服务器软件和未优化的 Spigot 设置几乎所有操作都在单个线程上进行。Paper 以及 Purpur 等分支版本会重构管道的大部分,使其异步和多线程运行,并提供 vanilla 从未拥有的大量默认优化。在修改任何插件或设置之前,这是你能利用的最大杠杆.
纸
标准现代选择。异步分块加载、实体追踪优化,以及一套管理员通常难以完全探索的 paper.yml 调优选项.
紫
一次性纸叉,搭配额外的性能旋钮和游戏设置开关,层层叠加。如果你想要更多控制权,同时又不想离开 Paper 生态系统,那它值得购买.
香草与原装龙头
功能可用,但对于超出小型低负载服务器的任何应用,实际性能都未充分发挥.
调整 JVM 标志,而非仅仅是服务器配置
Minecraft 服务器运行在 Java 虚拟机中,JVM 的默认垃圾回收设置从未针对 Minecraft 的特定内存模式进行优化。Aikar 的标志是一套广泛使用且公开记录的 JVM 启动标志,它们专门配置垃圾回收器以适应这种模式,并且在真实玩家负载下显著减少了与垃圾回收相关的冻结频率和时长.
在玩家探索世界之前预先生成你的世界
服务器突然出现 TPS 下降的最常见原因之一是,当玩家探索未认领的区域时,服务器实时生成新的区块。这种生成工作会直接与服务器在同一刻尝试执行的其他所有任务竞争资源。像 Chunky 这样的工具可以在受控且限速的条件下预先生成区块,从而确保后续探索的玩家永远不会触发峰值。
对于小型游戏网络来说,这在竞技场地图上影响较小,因为这些地图通常是静态且小型的,但在任何玩家可以自由漫游的开放枢纽或大厅世界中影响更大。
调整视野距离和模拟距离
这两个设置控制服务器需要为每个玩家加载和模拟的世界范围,它们是操作员最常保留在过高默认值上的设置,而这些默认值对于玩家数量和硬件来说都太高了。
| 设置 | 控制内容 | 常见错误 |
|---|---|---|
| 视野距离 | 向每个客户端发送的区块数量 | 保留默认值,对于玩家数量来说太高 |
| 模拟距离 | 怪物、方块和红石的实际模拟范围 | 将其设置为与视野距离相等,而实际上不需要 |
模拟距离通常是首先应该降低的。玩家不需要像渲染区块那样远距离模拟怪物和红石,降低模拟距离可以节省实际的tick时间,并且对游戏体验的影响很小。
在猜测之前先分析
猜测延迟的原因会浪费时间。像spark这样的分析工具可以精确地显示服务器tick时间是如何消耗的,无论是特定的插件、世界生成、实体处理,还是其他原因,而不是你随机调整设置并希望问题解决.
安装纸或紫珀
首先,先迁移到原版或原生的 Spigot。这会解锁下方的所有优化.
将 Aikar 的旗帜应用到你的启动脚本中
将记录的标志集复制到服务器的启动命令中,然后重启。 这是一个一次性更改,但会持续带来收益.
提前用 Chunky 预先生成你的世界
在低流量时段运行它,这样探索的玩家就不会稍后触发实时的区块生成.
刻意设置视野距离和模拟距离
根据你的实际玩家数量和硬件配置进行调整,而不是保持平台默认设置.
载荷下闪烁曲线
高峰时段记录报告,并针对实际情况采取措施,而不是猜测.
服务器性能并非全部
维持稳定的 TPS 只是体验的一半。每个玩家仍然在其自己的机器上渲染这个稳定的服务器,而一个坚如磐石的服务器对那些因渲染、内存或不匹配的着色器包而导致客户端卡顿的玩家毫无帮助。如果你运营一个 BedWars 或 SkyWars 网络,并且已经完成了上述工作,那么为你的玩家提供流畅体验的另一半,在于他们的客户端表现。Terminus 正是为了填补这个差距而构建的,它旨在优化客户端性能,以匹配你已经完成的服务器工作。
常见问题解答
客户端修改会改变玩家本地的运行情况。服务器延迟存在于服务器的tick循环中,只有服务器端的更改,软件、标志、插件、世界设置才能影响到它.
服务器软件。从原版或未优化的 Spigot 迁移到 Paper 或 Purpur,可以解锁异步和多线程功能,而许多其他优化构建都以此为基础.
是的,尤其是在 Minecraft'垃圾回收器,这是 Vanilla 默认处理得不好的地方,尤其是在高负载情况下。它们无法修复真正配置不足的服务器,但在配置合理的硬件上,可以显著减少与垃圾回收相关的卡顿.
使用像 /tps 的指令或像 spark 这样的插件来检查服务器的 TPS。如果 TPS 稳定在 20 左右,但你仍然感到卡顿,那么问题很可能出在你自己的客户端或连接上,而不是服务器本身.
获取Terminus
Tuned client performance to match the server work you already did.