Minecraft 服务器优化指南

基于社区最佳实践,助您榨干服务器的每一滴性能。告别 TPS 下降,拥抱丝滑体验。

简介

没有所谓的“完美配置”。每个服务器都有其独特的需求和限制(如硬件资源、玩家数量、游戏模式)。本指南旨在帮助您理解各个选项对性能的影响,以便您根据实际情况进行微调。如果您使用的是原版 (Vanilla) 或 Spigot,强烈建议升级到 Paper 或 Purpur 以获得显著的性能提升。

最佳实践与避坑

务必备份

数据无价!世上只有两种人:已经备份的,和即将因为数据丢失而后悔莫及的。请务必定期备份您的世界存档和插件数据。

拒绝过时软件

运行过时的服务器版本不仅会导致性能低下,还可能让您的服务器暴露在已知的漏洞攻击之下(如刷物品漏洞)。虽然可以通过跨版本插件(ProtocolHack)支持旧版本客户端,但这并不是长久之计。

核心选择:Paper 或 Purpur

Bukkit 和 Spigot 已处于“维护模式”,不再提供性能优化。强烈建议使用 Paper(性能优异,修复了大量原版漏洞)或 Purpur(在 Paper 基础上增加了更多自定义功能)。它们不仅完全兼容 Spigot 插件,还带来了异步区块加载等革命性优化。

硬件选择

不要只看内存(RAM)大小。Minecraft 服务器主要依赖单核性能,因此 CPU 的单核主频至关重要。同时,**绝对避免使用机械硬盘 (HDD)**,SSD 是服务器流畅运行的基石,因为 Minecraft 涉及大量的 I/O 操作。

警惕“优化插件”

  • 扫地大妈/清理掉落物插件: 通常是多余的。使用服务器自带的 merge-radiusalt-item-despawn-rate 配置更高效。
  • 生物堆叠插件: 弊大于利。堆叠生物会导致服务器尝试生成更多生物,反而增加负担。仅建议在刷怪笼密集的服务器使用。
  • 插件热重载 (PlugMan 等): 极度危险!在运行时加载/卸载插件可能导致内存泄漏或数据损坏。请始终通过重启服务器来应用更改。

网络设置 (Networking)

server.properties

network-compression-threshold

推荐值
256

设置数据包压缩的阈值。设为 256 可以平衡 CPU 使用率和带宽。如果您的服务器在内网或使用了 BungeeCord/Velocity 代理,可以尝试设为 -1(禁用压缩)以节省 CPU。

purpur.yml

use-alternate-keepalive

推荐值
true

启用 Purpur 的替代心跳机制,可以防止网络状况不佳的玩家被误判超时踢出。

区块设置 (Chunks)

server.properties

simulation-distance

推荐值
4

模拟距离:决定了玩家周围多少区块内的红石、生物AI、植物生长会运作。建议设为 3 或 4。这允许您在不增加服务器计算负担的情况下,通过提高 view-distance 来让玩家看更远。

server.properties

view-distance

推荐值
7

视距:决定了发送给玩家的区块距离。如果模拟距离设为 4,视距设为 10,玩家能看到 10 格远,但只有 4 格内的作物会生长。这能显著提升性能。

paper-world.yml

delay-chunk-unloads-by

推荐值
10s

延迟区块卸载。防止玩家在区块边界反复移动导致区块频繁加载/卸载,从而造成卡顿。

paper-world.yml

prevent-moving-into-unloaded-chunks

推荐值
true

防止玩家进入未加载的区块,避免因同步加载区块导致的主线程卡顿。

生物设置 (Mobs)

bukkit.yml

spawn-limits

推荐值
monsters: 20 animals...
完整推荐配置:
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
ambient: 1

限制每位玩家周围的生物数量。配合 Paper 的 per-player-mob-spawns: true 使用效果最佳。

spigot.yml

entity-activation-range

推荐值
animals: 16 monsters...
完整推荐配置:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 48

实体激活范围。超出此范围的生物将停止思考(AI),大幅降低 CPU 占用。

spigot.yml

nerf-spawner-mobs

推荐值
true

削弱刷怪笼生成的生物。这些生物将没有 AI(不会攻击、移动),对于刷怪塔来说非常完美,能极大节省性能。

paper-world.yml

despawn-ranges

推荐值
soft: 30 hard: 72
完整推荐配置:
soft: 30
hard: 72

生物消失范围。soft 为软上限(随机消失),hard 为硬上限(强制消失)。Hard 值应略大于您的模拟距离。

杂项优化 (Misc)

spigot.yml

merge-radius

推荐值
item: 3.5 exp: 4.0
完整推荐配置:
item: 3.5
exp: 4.0

掉落物合并半径。增加此值可让更多掉落物堆叠在一起,减少实体数量。

paper-world.yml

alt-item-despawn-rate

推荐值
enabled: true items:...
完整推荐配置:
enabled: true
items:
  cobblestone: 300
  netherrack: 300
  sand: 300
  ...

自定义特定物品(如圆石、地狱岩等垃圾方块)的消失时间(tick)。300 ticks = 15秒。比扫地插件更高效。

paper-world.yml

redstone-implementation

推荐值
ALTERNATE_CURRENT

使用 Alternate Current 红石算法。比原版红石算法快数百倍,且极大减少了不必要的方块更新。

paper-world.yml

optimize-explosions

推荐值
true

优化爆炸算法。在计算 TNT 爆炸时牺牲微不足道的精度来换取巨大的性能提升。

Java 启动参数

对于 Minecraft 1.20.5+,您需要 Java 21。推荐使用 Adoptium (Eclipse Temurin) 或 Amazon Corretto。

垃圾回收 (GC) 参数对减少卡顿至关重要。请不要手动拼凑参数,强烈建议使用 flags.sh 生成器。

Aikar's Flags (通用推荐)

适用于大多数服务器 (8GB+ 内存推荐使用 G1GC)

java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui

性能分析工具

Spark

最强大的性能分析插件。可以找出导致卡顿的具体插件或代码位置。

官网下载

MSPT 命令

Paper 自带命令 /mspt。如果数值低于 50ms,说明服务器流畅。如果高于 50ms,说明存在卡顿。

客户端画质模拟器

不同电脑配置能开到什么效果?

选择你的硬件档位与玩法偏好,生成一个“能跑得动且看起来舒服”的客户端画质预设(偏向 Java 版)。

推荐预设
预估 FPS(常见场景)
游戏内设置建议
渲染距离
图像质量
粒子效果
生物群系混合
实体距离
推荐“能看到的效果”
推荐模组组合
提示
刷新页面缓存
说明:这是一个“经验模型”,用于快速估算大概能开到的画质与帧率范围。实际结果还会受到驱动、温度墙、光影包类型、地图复杂度、后台程序等影响。