我自己开服的时间不算短从大学宿舍用一台旧笔记本带六个室友到后来用云主机给几十个朋友开模组服中间踩过的坑能写满一本笔记本。很多人觉得我的世界服务器是件特别专业的事觉得要买昂贵设备、要有运维功底其实完全不是这么回事。只要你手头有一台能正常跑游戏的电脑按这篇文章一步步操作完全能把服务器跑起来让不管在哪个城市的朋友都能连进你的世界一起玩。这篇文章我会把整条链路拆开讲硬件评估、服务端选型、配置文件、启动脚本、外网联机以及最常遇到的坑和完整的排查思路。适合想跟朋友开个小服、想尝试当服主、或者想自己折腾插件模组的玩家不需要你有编程基础但如果你愿意把每个参数多问一句为什么你会少走很多弯路。1. 先想清楚你的电脑够不够格当服务器很多人开服失败不是因为操作不对而是第一步就没想清楚自己的机器到底能扛多少人。我的世界服务器和普通游戏的资源需求逻辑有很大区别先把这个搞明白后面能省掉很多折腾。1.1 硬件配置到底要看哪几个数我的世界服务器几乎不吃显卡因为服务器根本不需要渲染画面它只需要计算世界逻辑、实体移动、方块变化、玩家数据。真正决定服务器容量的硬件按重要程度排序是CPU单核性能、内存容量、磁盘读写速度、网络上行带宽。CPU是最容易被忽略的。我的世界服务器的主逻辑是单线程的也就是说无论你的CPU有八核还是十六核游戏计算主要压在其中一个核心上。所以Frequency高的CPU比核心多的CPU更吃香Intel带K系列、AMD带X系列在同价位下往往表现更好。玩家越多、红石机器越多、实体越多这个单核压力就越大。内存方面给一个比较实际的起步参考联机人数CPU建议内存分配建议上行带宽建议1-5人近五年主流CPU即可2-4G10M 以上5-20人近三年主流桌面CPU4-8G20M 以上20-50人高性能桌面CPU或服务器CPU8-16G50M 以上这里说的内存分配指的是-JVM堆内存还不包括系统本身占用。如果你的电脑平时还要自己玩游戏、开浏览器、跑开发工具那物理内存最好在分配基础上再加4G以上否则很容易整机卡顿。磁盘方面强烈建议用SSD。我的世界在加载新区块、保存存档时要写大量小文件机械硬盘在玩家跑图的时候会出现明显的卡顿甚至导致服务器假死。如果条件允许把服务端整个目录放到SSD上体感提升非常明显。1.2 网络环境决定你能邀请多少朋友网络这块要分场景。如果你只想让在同一个Wi-Fi下的朋友连进来那网络几乎不是问题只要路由器没做特殊的AP隔离连上同一个路由器的设备都能通过内网IP直连。但如果想邀请外网的朋友你需要确认自己的网络有没有公网IP。用最简单的方式判断登录路由器后台看WAN口地址如果是一个以192.168.或10.开头的私有地址那基本可以确定运营商做了一层NAT你没有一个真正暴露在公网上的IPv4地址。这种情况下端口映射做得再标准外网也连不进来。解决办法有两类一个是给运营商打电话申请公网IP另一个是用内网穿透工具后面第五章我会详细展开。还有一个很多人没注意到的点家庭宽带的上行带宽通常远小于下行带宽。你玩游戏下载速度可能300M但上行可能只有30M甚至更少。我的世界联机需要把区块数据持续发往每个玩家上行带宽直接决定了你能稳定带多少人。20M上行大概带5到10人不是瓶颈但要心里有数别等朋友卡到飞天再找原因。1.3 开服前的三大问开始操作之前先回答三个问题答案会直接决定你的技术路线第一个问题原版还是模组如果只是纯生存、红石、建筑用原版服务端或者Paper就够了。如果想玩工业、魔法、冒险类模组那要考虑Fabric或Forge。这个选择会影响后面的整个配置方向我建议新手第一次开服先用原版或Paper跑通流程再加模组或插件不要一上来就上大整合包否则排查问题时会非常痛苦。第二个问题几个人玩一个人玩和十个人玩资源配置完全是两个量级。自己一个人在家里挂机甚至不建服务器也行直接用游戏内的对局域网开放功能就能解决。但两个人以上、想做到随时能进、世界不随房主下线而消失那就需要独立服务器。第三个问题这台电脑白天还要不要干活如果你只有一台主力机白天要写文档、剪视频、打别的游戏那开着服务器会持续占用内存和CPU哪怕只有一个人在线后台线程也在不断加载和计算。这时候要么把服务器内存配额压紧要么考虑用另外一台旧电脑专门挂机。我的建议是2G内存就够一台三五个人的小服跑起来不要为了追求高配把整台电脑的资源全给服务器。2. 选对服务端不是把游戏打开就能当服务器很多人第一次开服的想法是把游戏启动器打开然后点对局域网开放这不就是服务器了吗其实不是。游戏内自带的对局域网开放功能本质上是让你这个游戏进程同时充当服务器和客户端一旦你关游戏或掉线服务器就没了而且性能、配置空间都很有限。真正的独立服务器是用一个专门的程序在后台运行整个世界不依赖任何客户端。2.1 四种服务端怎么选服务端和客户端是分开的。运行服务端需要下载独立的服务器程序而这个程序有好几种选择选错方向后面会很麻烦。官方原版服务端server.jar从Minecraft官网直接下载最原汁原味稳定性好但几乎没有扩展能力想加插件、改游戏规则都没有原生支持。适合只想开一个纯原版、几个人佛系玩的服务器。Spigot老牌的插件服务端支持海量Bukkit插件当年几乎是开服标配。但近几年的性能提升和Bug修复速度跟不上了新开服不太推荐。Paper目前社区使用最广泛的服务端基于Spigot改进而来性能比Spigot好一大截还修复了很多原版的奇奇怪怪的问题。最关键的是它兼容绝大多数Bukkit/Spigot插件也就是说你想装领地、商店、经济这类插件用Paper几乎都能跑。我个人强烈推荐新手直接用Paper。Fabric和Forge模组服务端。Fabric轻量、启动快、更新积极很多新模组都优先支持FabricForge则更适合大型整合包如果你想要All the Mods这类几百个模组的大包Forge往往是更稳妥的选择。给你一个简单的选择表你的需求推荐服务端纯原版几个人佛系玩官方原版或Paper想装领地、商店、经济插件Paper想玩新模组追求轻量Fabric想玩大型整合包Forge不确定选什么先用Paper跑通全程要说为什么我这么推荐Paper因为它的优化确实做得实在。它把区块加载、实体处理、TNT爆炸、生物AI这些重逻辑都做了优化同样配置下能带的玩家数量比原版明显更高。而且Paper自带一些反作弊和性能监控功能对新手服主非常友好。2.2 Java 环境的安装与版本匹配我的世界Java版的服务端是Java程序所以要先装好合适的Java运行环境。版本匹配这事我见过太多人栽跟头明明服务端下载好了双击运行就报错闪退一查日志全是UnsupportedClassVersionError十有八九是Java版本不对。按服务端版本对号入座我的世界 1.17 及以下版本Java 8或Java 16我的世界 1.18 到 1.20.4Java 17我的世界 1.20.5 及以上Java 21也就是说如果你现在下载最新的Paper 1.21那必须装Java 21。如果你装的是Java 8启动时会直接报错。下载Java建议选TemurinAdoptium项目的JDK不要用那种来路不明的极速版。安装时注意如果你的电脑之前装过其他版本Java最好把系统环境变量里的JAVA_HOME指到你想要的那个版本否则命令行里java -version显示的可能不是你以为的那个版本。检查命令很简单终端里执行java -version看到版本号和你的服务端要求一致就可以继续了。2.3 服务端文件下载与目录结构找一个单独文件夹放服务端别放在桌面也别放在带中文和空格的路径里。我知道Windows允许中文路径但有些模组和插件在处理路径时可能出问题纯英文路径一劳永逸。比如 D:\MCServer。在文件夹里放好服务端jar包。官方原版从Minecraft官网下载Paper从papermc.io下载选好对应游戏版本和Build版本下载最新的稳定Build即可Fabric去fabricmc.net会生成一个服务端启动器。这些站点如果下载慢可以搜索国内的开源镜像站通常速度和稳定性都不错。启动一次之后目录里会多出这些文件和文件夹eula.txt最终用户许可协议首次启动后生成需要手动改内容同意server.properties服务器核心配置文件world世界存档文件夹logs运行日志plugins插件文件夹Paper/Spigot用config一些插件的配置文件搞清楚这些文件分别是什么后面排查问题会轻松得多。我见过有人把整个服务端目录随意乱放升级版本时把旧存档弄丢非常可惜。2.4 首次启动eula.txt 这一步别忽略第一次运行服务端时打开命令行进入服务端目录执行java -jar paper-1.21.1-136.jar nogui注意nogui参数意思是不启动图形界面只跑控制台命令行。服务端自带的图形界面又卡又没必要强烈建议使用nogui。第一次启动会很快结束然后在目录里生成一个eula.txt。打开它把eulafalse改成eulatrue保存。这一步是向Mojang确认你同意最终用户许可协议。有一点要注意按EULA的要求服务器不能用于商业盈利朋友们之间AA搞个活动费用是可以的但别想着开服卖装备道具赚钱这属于违反协议的行为也可能给自己惹麻烦。改完eula之后再次启动这次服务端就会真正开始加载世界。看到控制台出现Done字样说明服务器已经启动成功。这时候可以在游戏里添加服务器地址localhost:25565或者直接本机连localhost测试能不能进去。3. 配置文件的每个字段改对了省心改错了抓狂服务端跑起来之后你会面对一个server.properties文件。这个文本文件是所有配置的核心每一项都值得弄清楚因为改错一个数字可能导致朋友进不来或者游戏体验变得很怪。3.1 server.properties 必须了解的参数用记事本打开server.properties默认内容很多但你需要关注的其实就这几个server-port25565服务器端口。默认25565如果被占用可以改成25566或者别的但后面朋友连接时要加端口号。非必要不建议改。online-modetrue正版验证开关。如果X开true只有正版账号能进盗版启动器的玩家会被挡在外面。如果X开false任何人都能连但风险也大强烈建议配合白名单使用。white-listfalse白名单开关。建议服主一开始就设为true然后用命令whitelist add 玩家名来控制谁能进。motdA Minecraft Server服务器列表里显示的一行说明文字可以随便写点有个性的内容比如欢迎来到XX的小服。gamemodesurvival默认游戏模式可选survival、creative、adventure、spectator。difficultyeasy难度可选peaceful、easy、normal、hard。pvptrue是否允许玩家互相攻击。朋友间玩生存一般开着但如果开着PVP又碰到喜欢手贱的朋友被拆家别怪我没提醒。max-players20最大同时在线人数。不要盲目调高人数越多服务器压力越大。view-distance10服务器向玩家发送的区块视距单位是区块。调低到6-8能明显降低CPU和内存压力对大多数小服来说完全够用了。spawn-protection16出生点保护半径。这个数值范围内普通玩家不能破坏方块防止有人一进服就把出生点拆得稀巴烂。但注意如果你和朋友在出生点附近建东西这个保护会挡住你们改小一点比如0或1就可以放心建设。enable-command-blockfalse是否开启命令方块。想在生存服里用命令方块做小游戏就设true否则保持false。level-seed世界种子留空则随机生成。如果你有一个想分享的种子填在这里。spawn-monsterstrue是否生成怪物。如果你想要纯和平建筑服可以设false。allow-nethertrue是否允许下界。如果关掉去下界的传送门会失效。这些参数改完之后保存文件然后到控制台执行stop重启服务端。注意直接关闭窗口可能导致存档损坏正规做法是在控制台输入stop让服务器保存后退出。3.2 内存分配-Xmx 和 -Xms 该怎么设这是内存分配里最值得讲清楚的一环。启动命令里-Xmx是最大堆内存-Xms是最小堆内存。很多教程都会告诉你设置越大越好这个说法不完全对。首先堆内存不是越大越好。Java的垃圾回收机制GC在堆内存过大时单次垃圾回收的停顿时间会变长服务器会出现周期性卡顿。其次如果物理内存本身不够超出的部分会被操作系统转移到虚拟内存也就是用硬盘当内存那卡顿会更严重。比较合理的做法是-Xms和-Xmx设成相同值避免Java在运行时频繁调整堆大小。然后根据你的物理内存给系统和其他程序留出余量。举个例子如果你有16G内存日常系统占用加浏览器大概4G你希望留4-6G给自己做其他事那给服务器的堆内存设定在6G到8G之间比较合适。一台专门挂服、没有其他任务的机器可以把物理内存的70%左右给Java但不要超过80%。具体到命令就是java -Xmx6G -Xms6G -jar paper-1.21.1-136.jar nogui如果你是64位系统装了64位Java-Xmx4G这种写法是支持的。如果系统比较老只有32位Java那么堆内存上限会被限制在1.5G左右这种情况建议重装64位Java否则服务器带几个人就极容易崩溃。3.3 白名单、正版验证和游戏模式保护你的世界服务器一旦暴露在公网上不只是你的朋友能连进来互联网上的陌生人也有机会扫描到你的端口。所以如果你把online-mode设成false白名单就不只是建议了几乎是必须。开启白名单的方法在server.properties里把white-listtrue保存重启。然后在服务器控制台里执行whitelist add 玩家名用英文名注意区分大小写。之后在游戏内也可以由服主执行同样的命令。如果你想临时放一个人进来可以whitelist remove把某人移除同时该玩家会被踢出服务器。正版验证开关online-mode true时服务端会向Mojang的会话服务器验证每个玩家的正版身份安全性比较高。但如果你和朋友们用的是离线启动器那只能设为false。这时候白名单就成了唯一防线再加上你可以在玩家进服时先观察一段时间确认没问题再给建筑权限降低风险。游戏模式方面我建议开服前先想好定位生存服推荐把spawn-protection设小一点然后把difficulty设normal或hard让玩家有挑战感如果你想搞建筑服gamemode设creative同时打开飞行权限allow-flighttrue否则创造模式飞行会被反作弊误判踢出。创建完世界后也可以随时用命令切换某个玩家模式gamemode creative 玩家名服务器的默认模式不会强迫所有玩家但会影响新玩家第一次进服时的状态。4. 启动脚本把日常开服变一键操作手动在命令行敲那一长串Java命令一次两次还行时间长了真的烦。而且如果你哪天不小心直接关掉窗口世界存档可能损坏。所以花两分钟写个启动脚本是开服路上很值得的投资。4.1 写一个 Windows 版的启动脚本在服务端目录下新建一个文本文件重命名为start.bat注意后缀是.bat而不是.txt。右键编辑写入以下内容echo off title Minecraft Server cd /d %~dp0 java -Xmx6G -Xms6G -jar paper-1.21.1-136.jar nogui pause每个命令解释一下echo off不在窗口里显示每一行命令本身输出干净一点。title Minecraft Server把命令行窗口的标题改成Minecraft Server方便多窗口时辨认。cd /d %~dp0切换到脚本所在目录。这是最容易忽略的一步如果少了这行脚本在以管理员身份运行时可能会把工作目录定位到system32然后找不到服务端jar包。java -Xmx6G -Xms6G -jar ... nogui实际的启动命令。pause服务器进程结束后窗口停留方便你看到错误信息而不是闪退后一脸懵。每次启动只需要双击start.bat看到控制台出现Done服务器就在后台跑着了。控制台本身就是实时日志玩家发消息、后台报错都会在这里显示。如果你在macOS或Linux上开服就写一个start.sh#!/bin/bash cd $(dirname $0) java -Xmx6G -Xms6G -jar paper-1.21.1-136.jar nogui保存后给执行权限chmod x start.sh4.2 常用启动参数的含义Java启动参数的坑挺多的新手容易写错顺序。注意所有以-X和-XX开头的JVM参数必须放在java和-jar之间比如java -Xmx6G -Xms6G -XX:UseG1GC -Dfile.encodingUTF-8 -jar paper-1.21.1-136.jar nogui推荐几个实用参数-XX:UseG1GC显式指定使用G1垃圾回收器。Java 8默认不是G1而Minecraft服务器在G1下表现更好Java 17以上默认已经是G1写不写都行。-Dfile.encodingUTF-8强制使用UTF-8编码避免中文玩家名、中文消息在日志里变成乱码。-XX:ExitOnOutOfMemoryError当内存耗尽时让JVM直接退出而不是进入半死不活的状态方便你及时发现问题。--port 25565临时指定端口不用改配置文件适合临时测试。不要把服务端自己的参数比如nogui、--port放在-jar前面否则Java会把它当作JVM参数解析直接启动失败。4.3 备份和定时重启的重要性备份这件事我多说几遍都不嫌多。我的世界存档就是一堆文件夹和文件手动备份最简单的方法是在服务端关闭状态下把world文件夹整个复制一份改个日期名。比如world_20250328如果你想让备份自动化Windows可以用计划任务配合Robocopyrobocopy D:\MCServer\world D:\MCServer\backup\world_%date:~0,4%%date:~5,2%%date:~8,2% /MIR一行命令把world目录镜像到一个带日期的备份文件夹。%date:~0,4%这类写法是取当前日期的年月日。配合Windows任务计划程序设定每天凌晨4点执行基本就能做到每日自动备份。定时重启也值得养成习惯。Minecraft服务器长时间运行内存碎片、区块卸载不干净、插件状态累积都会让服务器越跑越卡。我自己的经验是一个隔天重启一次、每次两分钟的服务器比连续跑一个月的服务器流畅得多尤其是装了插件之后。重启前在游戏内广播say 服务器将在5分钟后重启请玩家注意保存退出。然后到时间执行stop再双击start.bat重新启动即可。这一步可以用脚本自动化但对小服来说手动重启完全够用了。5. 让别人连进来局域网、端口映射和内网穿透这是整个教程里最多人卡住的一关明明服务器跑起来了朋友却怎么都连不进来。要搞清楚这个问题先得明白你在用哪种网络方式。5.1 先搞懂联机的三种场景你的朋友连你的服务器实质上是从他的电脑访问你电脑上的25565端口。根据你和朋友之间的网络关系有三种场景第一种同一局域网。比如朋友在你家做客连的是同一个Wi-Fi那直接把你的内网IP给他就行。查看内网IPWindows下在命令行执行ipconfig找IPv4地址通常是192.168.x.x或者10.x.x.x。第二种你有公网IP。这种场景下你的电脑在互联网上有一个独一无二的地址只要你把路由器上的端口映射配置好朋友在任意网络环境都能直接连接。第三种你没有公网IP。这是大多数家庭宽带的情况运营商把IPv4地址做了NAT分配你的路由器WAN口拿到的还是一个内网地址。这种情况下端口映射做得再完美也没用因为外人根本找不到你的真实地址。这时候要借助内网穿透工具让你的电脑主动连接一台有公网IP的中转服务器朋友连中转服务器再由中转服务器把数据转发给你。5.2 端口映射的具体操作步骤假设你确认自己拿到了公网IP端口映射是让外网朋友连进来的核心操作。流程如下第一步固定你电脑的内网IP。因为路由器DHCP分配的内网IP可能变化如果IP变了端口映射就失效了。方法是在路由器后台里把电脑的MAC地址绑定一个固定IP比如192.168.1.100。第二步查看电脑内网IP。命令行执行ipconfig记下IPv4地址。第三步登录路由器管理后台。一般地址是192.168.1.1或者192.168.0.1具体看路由器背面的标签。不同品牌的路由器后台界面不一样但相关功能一般叫端口映射虚拟服务器NAT转发或者转发规则。第四步添加一条映射规则。填写要点外部端口25565内部端口25565内部IP地址192.168.1.100你电脑的固定IP协议TCP/UDP或者直接选TCP我的世界联机主要用TCP保存后在服务端确保正在运行的状态下让你朋友用你的公网IP连接。公网IP怎么看直接在浏览器搜索IP搜索结果第一项就是。把公网IP:25565这个地址发给朋友他就能在游戏里添加服务器连进来。5.3 用内网穿透解决没有公网IP的问题如果你的运营商不给公网IP端口映射这条路走不通那就用内网穿透。这里我推荐两种思路。一种是纯组网方案比如Tailscale。原理是把你电脑和朋友的设备放进同一个虚拟局域网里每台设备都分配一个虚拟内网IP。你的服务器开启后朋友只需要连接你提供的那个虚拟IP加端口即可。这类工具对小白很友好下载客户端、登录账号、把设备加进同一个网络就完成组网不需要折腾路由器。缺点是所有设备都得装客户端对不太熟悉技术的朋友来说稍微有点门槛。另一种是端口转发方案类似frp或者各种内网穿透服务。原理是你电脑上运行客户端程序主动连接一台有公网IP的服务器把本地的25565端口映射到服务器的某个端口。朋友连接的是服务器的公网IP加映射端口。这类方案适合你希望朋友不用装任何东西、直接在游戏里输入地址就能连的场景。使用内网穿透有一个要注意的安全问题它本质上是把你的电脑端口暴露到公网上一旦被陌生人扫描到就可能有人闯进来。所以使用穿透方案时一定一定要开白名单这是底线。另外尽量使用正规厂商的服务从官方渠道下载客户端别用来历不明的破解版穿透工具隐私和电脑安全都更重要。还有一个补充思路如果你的宽带有IPv6地址从技术上是支持外网直连的不需要任何穿透工具也不需要端口映射。前提是你和朋友两边的网络都支持IPv6这在国内运营商已经比较普及了。配置起来比IPv4的端口映射更简单但如果你不确定自己的IPv6情况可以先不折腾穿透方案对小服来说足够用。5.4 防火墙放行和常见坑好不容易做完端口映射发现朋友还是连不上这时候先把系统防火墙检查一遍。Windows的防火墙默认会拦截外部对Java进程的访问。最省事的方法第一次启动服务端时如果弹出Windows安全警报勾选专用网络并点击允许访问。如果没有弹窗或者你已经点了取消那就手动放行。操作路径控制面板 - Windows Defender防火墙 - 高级设置 - 入站规则 - 新建规则 - 端口 - TCP - 特定本地端口填25565 - 允许连接 - 勾选所有网络类型 - 命名Minecraft Server。还有一个经常被忽视的坑很多家庭网络是光猫路由器双层结构光猫自己也有一个NAT。这种情况下即使你在路由器上做了端口映射光猫那一层又会把请求卡住。最彻底的解决方案是联系运营商把光猫改成桥接模式让路由器直接拨号这样你只需要在一层设备上配置映射。如果实在改不了也可以考虑在光猫里也做一次端口映射但光猫超级管理员密码通常不公开操作门槛比较高这种情况下我更建议用内网穿透。6. 实测中常见的坑与排查链路开服这件事只要能稳定跑起来剩下的百分之八十时间都在做同一件事排错。我把这些年最常遇到的几类问题整理出来每一条都按现象 - 原因 - 排查步骤的顺序讲你可以按图索骥。6.1 连接超时的完整排查路径连接超时是最最常见的报错但超时的原因可能有一长串。我建议按下面这条链路逐层排查每做一步都能缩小范围不要乱猜。第一步确认服务器真的在跑。看控制台如果最后一行不是Done说明服务器还在启动中或者已经崩了。崩了就看日志。第二步本机自测。在游戏里添加服务器地址为localhost:25565如果能进说明服务端本身没问题。这里有一个小提醒如果是正版验证模式有些客户端用localhost连接时会出现会话验证的坑但只要你本机能进基本可以排除服务端故障。第三步局域网测试。用另外一台连同一个路由器的设备填你的内网IP加端口连一下。如果连不上问题多半出在Windows防火墙或者服务端口配置上。第四步公网测试。如果局域网能连但外网设备连不上问题就在公网环节。先确认你的公网IP没变再检查路由器端口映射最后用手机流量不要连Wi-Fi测试一下因为连同一个Wi-Fi时走的还是局域网。第五步如果端口映射检查无误还是超时多半是运营商没给你公网IP。这时候别再纠结端口映射了直接用内网穿透方案往往几分钟就能解决。这条链路看起来简单但很多人一上来就怀疑端口映射折腾了半天才发现是防火墙没放行做了很多无用功。我自己后来养成的习惯是先在局域网里测通再考虑公网问题能把排查时间缩短一半。6.2 Java 内存报错 OutOfMemoryError服务器运行一段时间后控制台出现java.lang.OutOfMemoryError: Java heap space玩家掉线区块加载不出来这种问题多半是内存分配不够或者存在内存泄漏。排查第一步调高堆内存。假设你原来是-Xmx4G先看物理内存是否够用如果够改成-Xmx6G再观察。如果改了之后还报错说明问题不是容量不够而是有异常消耗。这时候要看是不是插件出的问题。建议打开Paper的timings性能报告控制台执行timings report它会生成一份报告里面详细列出每个插件和任务占用的时间能帮你定位是不是某个插件一直在做高开销操作比如扫描实体、读取数据库、频繁写文件。还有一种情况是旧存档的问题。长时间运行的存档实体数量、区块数量会越来越大即使没人在线后台也在持续计算。这种情况可以适当调低实体上限、清理掉落物或者用命令定期清理kill e[typeitem]清掉地上的掉落物对缓解内存压力立竿见影。归根结底Minecraft服务器的性能管理和内存分配是动态平衡硬堆内存不是唯一的解法控制加载范围和实体数量同样重要。6.3 端口被占用、启动闪退双击启动脚本结果窗口一闪而过服务器没起来。这种情况最让人头疼因为根本来不及看错误信息。解决办法很简单不要双击改用命令行方式运行这样窗口会停在报错处。在服务端目录下打开命令行执行java -Xmx6G -Xms6G -jar paper-1.21.1-136.jar nogui看到具体报错最常见的几种UnsupportedClassVersionErrorJava版本不对回去看2.2节。Unable to access jarfile路径写错了或者jar文件名和启动脚本里的名字不一致。Exception in thread main java.io.IOException: 端口号被占用说明25565端口已经被别的程序占用。端口占用排查方法Windows下命令行执行netstat -ano | findstr 25565看到一条LISTENING记录最后一列是占用进程的PID。再用tasklist /FI PID eq 你的PID就能看到是哪个程序占用。如果确实是其他程序在用你可以改服务端口或者结束那个进程。如果你发现占用25565的其实是另一个Java进程那多半是你之前开过服务器没关干净到任务管理器里找到Minecraft相关进程结束掉再重新启动。6.4 卡顿延迟高先从 TPS 和内存看齐玩家反映卡顿、延迟高、方块敲不碎不一定是网络问题很可能是服务器本身的运算速度跟不上了。这时候不要凭感觉猜直接在服务器控制台输入tpsTPS全称是Ticks Per SecondMinecraft服务器每秒最多运算20个游戏刻。如果tps显示20说明服务器运行正常如果只有十几甚至几说明服务器在超负荷工作玩家感受到的卡顿就是这个原因。TPS低的原因最常见的有四类。第一视距太高区块加载太多。第二实体过多比如养了几百只动物、刷怪塔附近的怪物堆积、大量掉落物没清理。第三高频红石机器比如大型刷石机、高速熔炉阵列。第四某个插件有性能问题。对应的处理思路调低view-distance和simulation-distance定期清理掉落物和多余的实体检查动物数量控制红石频率或者看看paper.yml里相关的优化选项用timings报告排查插件内存方面可以执行memory查看JVM堆内存使用率。如果使用率一直很高但TPS又低优先考虑是GC问题还是实体问题。实际经验告诉我大多数TPS掉到个位数的情况都是内存分配没跟上或者区块加载太多不是单纯网络带宽不够。7. 进阶优化让服务器更稳、更好玩服务器能稳定跑起来和朋友联机不再掉线这时候你可以开始琢磨怎么让它更顺手、更好玩。这一章讲三个方向性能优化、插件模组推荐、备份方案。7.1 性能优化的几个关键点第一个关键点理解view-distance和simulation-distance的区别。view-distance决定服务器向玩家发送多少区块的画面simulation-distance决定这些区块中有多少会被真实模拟包括实体活动、红石运算、作物生长。对于性能紧张的服务器优先降低simulation-distance画面上玩家能看远一点但远处区块不会疯狂计算性能提升非常明显。一般小服设置view-distance为8到10simulation-distance为4到6体验和性能就能平衡。第二个关键点预生成地图。Minecraft的世界是无限生成的玩家跑到哪服务器就现场生成到哪这个过程非常消耗CPU。如果你希望玩家跑图时更流畅可以用Chunky插件预先生成一定半径的区块。比如你想让世界半径5000格内都生成好在控制台执行chunky radius 5000 chunky start服务器会批量生成区块生成完之后玩家在这个范围内跑图就会顺畅许多。注意预生成会持续占用CPU建议在服务器空闲时段执行。第三个关键点Paper的paper.yml里有大量优化项。比如entity-activation-range控制实体在远处时的活动范围调低能让远处的动物和怪物减少计算还有mob-spawner-tick-rate控制刷怪笼的运算频率。这些配置适合有一定经验的服主去调整。新手不用急着动把视距和内存管好就已经能解决80%的性能问题。7.2 常用插件与模组推荐如果你用Paper服务端插件是第一梯队。几个我个人觉得开服必备的EssentialsX集成了经济系统、传送系统/tpa、/home、/spawn、聊天前缀等基础功能几乎所有服务器都要装。Vault经济插件的前置接口很多商店插件、地皮插件都依赖它。GriefPrevention或Residence领地保护插件玩家可以圈地圈地范围内别人不能破坏方块防熊孩子神器。LuckPerms权限管理插件可以给不同玩家分组、设置不同命令权限。虽然新手阶段可以先不装但朋友多了之后建议尽早引入。SimpleBackup自动备份插件设定时间和备份周期按版本保留多个备份。装插件的方法很简单在服务端目录建一个plugins文件夹把下载好的jar文件丢进去重启服务器。大部分插件第一次启动后会生成自己的配置文件夹按照需求去改配置即可。注意版本匹配Bukkit系插件通常兼容Paper但插件是为哪个MC版本写的最好和服务端大版本一致否则可能加载失败。如果你走的是Fabric模组路线推荐几个提升体验但不改变游戏内容的模组Lithium性能优化模组光装不配置就能感受到流畅度提升。Starlight光照优化把区块光照计算速度提升几倍。Carpet服务端增强工具可以开关一些原版机制适合喜欢研究红石和特性的人。7.3 在线备份方案前面第五章提过roocopy的思路这里再补充一个更灵活的方式。在Paper上你可以用SimpleBackup插件直接设置在线备份不用停服会自动把存档复制到指定目录还可以设置保留最近几个备份。比如backup start插件会把当前世界打包成zip保存。在线备份可能存在轻微的数据不一致但对于大多数小服来说完全够用。如果对数据一致性要求高更稳妥的做法是每周挑一个固定时间先广播让玩家下线然后stop停服复制world文件夹后再重新启动。这个过程加一个脚本安排到凌晨执行也不影响任何人。备份这事我吃过一次大亏。有一年暑假一个朋友误用命令把主世界的地皮全清了我当时没有备份一整年的建筑付之东流。从那以后我的原则就是备份频率能容忍的数据丢失时间不要大于你的备份间隔。每天备一份就算丢也不会丢超过24小时的内容而这个成本只是一个Robocopy命令而已。我自己开服这几年最后沉淀下来几条习惯第一永远开白名单不管服多小第二改任何配置之前先备份第三遇到问题先在局域网范围测通再考虑外网第四服务器持续运行超过两天找个时间重启一下。按这套节奏走不管你是想跟几个朋友在生存服里盖房子还是想开一个带插件带模组的长期社区服都能少踩很多坑。如果你在实操中遇到其他奇奇怪怪的问题也建议先看日志再动手大部分答案其实都写在logs文件夹里。