Minecraft 服务器开得久了,各种「卡」「崩」「掉」三连——玩家报卡、日志报错、内存吃满。多数问题有规律可循,不用每次从头排查。下面把最常遇到的五类故障的诊断方法和修复步骤整理出来。
一、TPS 暴跌:服务器变慢的根本原因
TPS(Ticks Per Second)是衡量 MC 服务器性能的核心指标,正常值 20。低于 18 开始有感知延迟,低于 15 就明显卡顿了。
怎么看 TPS
- Paper 自带:控制台输入
/mspt或/tps - 详细分析:
/timings report生成一份 HTML 报告,精确到每个插件、每个区块的耗时占比 - Spark 插件:
/spark profiler --timeout 300采集 5 分钟的 CPU 分布,比 timings 更底层
常见原因与修复
| 原因 | 诊断 | 修复 |
|---|---|---|
| 实体/生物过多 | timings 里 entity tick 占比高 | 限制养殖数量,加 ClearLag 插件定时清理 |
| 红石机器高频运转 | 特定区块 CPU 高 | 用 /paper chunkinfo 定位,关掉或降频 |
| 插件性能差 | timings 里某插件耗时占比异常 | 换性能更好的替代品或去插件社区查 issue |
| 视野/模拟距离太大 | server.properties 的 view-distance 超过 12 | 降到 8-10,simulation-distance 设 6 |
| 内存不足、频繁 GC | 日志里 GC 停顿超过 200ms | 见下文「内存溢出」部分 |
timings 报告是最重要的诊断工具——不用猜,看数据说话。哪个插件占了 40% 的 tick 时间,卸掉或换掉。
二、内存溢出(OOM)与 JVM 参数修正
症状:服务端突然崩溃,日志末尾看到 java.lang.OutOfMemoryError: Java heap space。
根因
- -Xmx 给太小,玩家多了内存不够;
- -Xmx 给太大(超过 12G),GC 全停顿反而变长,TPS 更差;
- 内存泄漏——某些插件越跑占用越高,从不释放。
修复
# 推荐参数(Paper 1.21,4G 内存) java -Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:InitiatingHeapOccupancyPercent=15 -jar paper.jar nogui
G1NewSizePercent 和 InitiatingHeapOccupancyPercent 这几个参数对 MC 这类「大量短期对象」场景特别有效——让 G1 更早介入年轻代回收,减少全堆停顿。
三、插件冲突与报错定位
症状:装了新插件后服务器起不来、或者某功能突然失效、或者日志里刷 NullPointerException。
排查步骤:
- 二分法:卸掉一半插件→重启→看问题还在不在,逐级缩小范围;
- 看日志栈:
NullPointerException下面那堆at com.xxx.plugin就是肇事者; - 看 Paper 兼容性:有些插件只支持 Spigot 不完全兼容 Paper,去插件页面确认;
- 版本匹配:插件版本必须和服务端 MC 版本一致,一个数字对不上就可能崩。
四、区块加载卡顿
症状:玩家走到未探索区域时全服卡一下(区块生成),或者进传送门跨维度时卡顿。
解决方案:
- 预生成地图——用 Chunky 或 WorldBorder 插件在开服前把地图预先生成一遍,上线后玩家走到哪都不卡;
- Paper 的
paper.yml里设max-auto-save-chunks-per-tick为一个较低值(默认 24 可能太高); - 把 maps 目录大小控制住——地图越跑越大,磁盘慢了 I/O 就卡。
五、玩家连接超时/掉线
症状:有人能进有人进不去、或者进去一会儿就掉。
- 安全组/ufw 只开了 TCP 没开 UDP?Java 版也是 TCP 但某些插件需要额外端口;
- 网络超时:
server.properties里max-tick-time设 -1(Paper 默认-1禁用,Spigot 默认 60000 毫秒超时); - 读超时——玩家网络差,调大
read-timeout。
如果用的是雨云游戏云,检查安全组确保 25565 端口对公网开放,同时检查服务器带宽是否被吃满——本站联机网络优化那篇有详细排查方法。
常见问题
关于 MC 开服排障的高频疑问,下面一并解答。






