前言

本文主要记录一次基于 Debian 服务器搭建 Minecraft Fabric 服务器会遇到哪些错误,包括服务器环境配置、Fabric 模组兼容处理、客户端连接、性能优化、崩溃排查。
服务器目标并不是大型多人商业服,而是提供 3~5 人的小型生存服务器环境,同时兼顾:
- Fabric 轻量化模组支持
- 较低服务器成本
- 稳定运行
- 支持客户端优化模组
- 尽量减少朋友安装配置成本
整个过程遇到了 Fabric Loader 版本冲突、Java 版本问题、客户端模组同步、区块加载速度、Watchdog 崩溃等问题。
一、服务器基础环境
1.1 硬件配置
最终服务器配置:
| 项目 | 配置 |
|---|---|
| CPU | 2 核 |
| 内存 | 8GB |
| 系统 | Debian 12 Bookworm |
| Java | Temurin JDK 21 |
| Minecraft版本 | 1.20.1 |
| 服务端 | Fabric Server |
| 网络 | 6M 带宽 |
| 玩家数量 | 3~5人 |
最初服务器为:
- 2核4GB内存
- Java 17
- Fabric 1.20.1
后续升级到 8GB 内存主要考虑:
- 更多模组空间
- 减少区块生成时内存压力
- 提高多人同时在线稳定性
二、系统环境配置
2.1 Debian 12 选择原因
服务器系统选择 Debian 12,而不是 Ubuntu。
主要考虑:
- 系统资源占用更低
- 后台服务更少
- 稳定性较高
- 更适合作为长期运行服务器
基础环境:
Debian 12 (追求稳定)
Java 21
screen
Fabric Server

别忘了开放端口
三、Fabric Server 安装过程
3.1 初始 Fabric Loader 问题
最初启动服务器出现:
Incompatible mods found!
错误:
Fabric API 0.92.8+1.20.1 requires Fabric Loader >=0.16.10
ModernFix requires Fabric Loader >=0.16.10
原因:
服务器使用:
fabric-loader-0.15.11
但是安装的优化模组要求:
Fabric Loader >=0.16.10
解决:
重新下载 Fabric Server:
wget -O fabric-server.jar \
"https://meta.fabricmc.net/v2/versions/loader/1.20.1/0.16.10/1.0.1/server/jar"
升级 Fabric Loader 到:
0.16.10
四、Java版本兼容问题
4.1 Java 17导致启动失败
升级 Fabric 后出现:
UnsupportedClassVersionError
class file version 65.0
错误含义:
class version 65 = Java 21
class version 61 = Java 17
说明:
部分组件已经使用 Java 21 编译,但是服务器仍然使用 Java 17。
4.2 安装 Java 21
Debian 软件源没有:
apt install openjdk-21-jdk
因此采用 Temurin JDK:
安装目录:
/opt/java/jdk-21.0.11+10
配置:
update-alternatives \
--install /usr/bin/java java \
/opt/java/jdk-21.0.11+10/bin/java 2100
确认:
java -version
服务器最终运行环境:
Java 21
五、服务器启动参数优化
最终启动:
java \
-Xms2800M \
-Xmx2800M \
-XX:+UseZGC \
-XX:+ZGenerational \
-XX:+AlwaysPreTouch \
-XX:+DisableExplicitGC \
-XX:+PerfDisableSharedMem \
-jar fabric-server.jar nogui
参数说明:
ZGC
用于降低 GC 停顿:
-XX:+UseZGC
适合:
- 多模组
- 长时间运行
- 大地图
固定内存
-Xms2800M
-Xmx2800M
避免运行过程中动态扩容造成卡顿。
六、当前服务器安装模组
服务端模组
当前主要:
| 模组 | 作用 |
|---|---|
| Fabric API | Fabric基础接口 |
| Lithium | 游戏逻辑优化 |
| ModernFix | 内存优化、启动优化 |
| FerriteCore | 降低内存占用 |
| Krypton | 网络优化 |
| Right Click Harvest | 右键收割 |
| EasyAuth | 登录认证 |
七、客户端模组
客户端额外安装:
性能优化
| 模组 | 作用 |
|---|---|
| Sodium | 大幅提升FPS |
| Iris | 光影支持 |
| Indium | Sodium兼容 |
| Entity Culling | 减少不可见实体渲染 |
| Dynamic Lights | 动态光源 |
超视距
尝试:
Distant Horizons
用于:
- LOD远景渲染
- 查看超远距离地形
但是发现:
服务器没有预生成地图时:
- 远处显示空白
- 出现断崖
- 小地图区域黑色
原因:
Distant Horizons只能渲染客户端已有数据。
它不能凭空生成服务器没有发送过的区块。
八、区块加载问题分析
8.1 会看到断崖
Minecraft区块加载流程:
玩家移动
↓
客户端请求区块
↓
服务器生成/读取区块
↓
发送给客户端
↓
客户端显示
因此:
没有探索过的区域:
服务器不存在区块数据。
Distant Horizons无法显示真实地形。
8.2 6M带宽是否够?
对于3~5人:
6M带宽基本够。
区块加载慢主要不是带宽问题,而是:
- CPU生成区块
- 磁盘读取
- Minecraft单线程限制
九、服务器崩溃排查
9.1 Watchdog问题
之前服务器出现崩溃。
主要原因:
Minecraft Watchdog检测到:
主线程长时间无法响应
触发:
强制关闭服务器
常见原因:
- 大量新区块生成
- 玩家快速探索
- 模组占用主线程
- GC停顿
十、服务器性能测试
使用:
/spark tps
测试。
最终结果:
TPS:
20.0 20.0 20.0 20.0 20.0
说明:
服务器保持满TPS。
Tick:
5.6 / 6.8 / 10.7 / 20.7 ms
Minecraft标准:
50ms = 极限
当前最高:
20.7ms
属于正常范围。
CPU:
system 7%
process 6%
说明:
CPU压力很低。
十一、当前服务器状态总结
当前环境:
Minecraft 1.20.1
Fabric Loader 0.16.10
Java 21
2核8GB
Fabric优化模组
Sodium客户端优化
Iris光影
Distant Horizons远景
性能:
TPS: 20
MSPT:
<30ms
CPU:
低占用
内存:
充足
当前瓶颈:
不是服务器性能。
主要问题:
- 世界没有提前生成
- Distant Horizons没有足够LOD数据
- Minecraft默认区块生成机制限制
十二、后续优化方向
12.1 使用 Chunky 预生成地图
推荐:
Chunky
提前生成:
例如:
出生点半径 512区块
流程:
无人在线
↓
服务器生成地图
↓
保存region文件
↓
玩家进入直接读取
可以明显改善:
- 探索卡顿
- 地形断裂
- DH远景显示
12.2 添加玩法模组
由于客户端已经分发,不建议大量增加必须客户端安装的模组。
优先选择:
服务端可运行:
- 经济系统
- 任务系统
- 管理工具
- 世界优化
减少朋友维护成本。
总结
这次 Fabric Minecraft 服务器搭建过程主要解决了几个核心问题:
- Fabric Loader 与模组版本匹配
- Java 17 与 Java 21兼容问题
- 客户端服务端模组同步
- Watchdog崩溃排查
- 区块加载与远景显示问题
- 性能测试与优化
最终服务器已经达到稳定运行状态。
对于3~5人的生存服务器,目前配置已经足够,下一步优化重点应该从“提升硬件”转向:
- 地图预生成
- 模组选择
- 世界管理
- 长时间稳定运行优化
这类小型 Fabric 服务器的主要限制通常不是内存,而是 Minecraft 主线程处理能力和世界生成压力。



