如何让 Minecraft 服务器 24/7 在线
本页内容
把 Minecraft 服务器跑起来是简单的部分。让它一直跑下去——整夜不停、你上班的时候、Windows 决定为了更新而重启的时候——则完全是另一个问题,而正是这个问题在悄悄扼杀绝大多数家用服务器。
这篇指南讲的就是第二个问题。不是该选哪家主机,而是到底是什么让服务器下线、把一台放在你卧室里的机器变成"永远在线"究竟意味着什么,以及有哪些具体做法能让它活下去:自动重启、看门狗、计划内重启和异地备份。读完之后,你会清楚地知道运行服务器的三条路里,哪一条与你愿意承担的工作量相匹配。
为什么你一不盯着,服务器就掉线
Minecraft 服务器就是一台机器上运行的一个程序。没有任何东西看管它,没有任何东西重启它,也没有任何东西替它让机器保持清醒。当有人说"我的服务器老是掉线",原因几乎总是下面五种之一,而且没有一种是 Minecraft 的错:
- 电脑进入了睡眠。 所有台式机和笔记本的默认电源设置都会在一段时间没有键盘或鼠标操作后挂起机器。哪怕服务器正忙着为玩家服务,系统依然把它算作空闲,因为没人碰键盘。
- Fast Startup 让一次关机看起来像重启。 在 Windows 上这个功能默认开启,也是最让人困惑的一种:机器看起来正常起来了,但你的服务器进程没了,而你设置的启动任务根本没有运行。
- 一次更新在凌晨三点重启了它。 Windows Update 和 Linux 上的无人值守升级都会不打招呼就重启。如果开机时没有任何东西启动你的服务器,它就再也回不来了。
- 有人合上了盖子、注销了账户,或者拔了插头。 退出用户会话会终止其中的进程。合上笔记本盖子会挂起机器。而需要用插座的室友会直接结束这场讨论。
- 电或网断了一下。 断一秒就够了。所有人都会掉线,而且没有任何东西会自己把服务器拉起来。
99.9% 在线率到底意味着什么
"永远在线"是一种感觉。在线率则是一项测量,而这个区别在你想弄清楚服务器究竟是真的可靠、还是它掉线时你恰好没在看的那一刻,就变得关键起来。
真实的在线率是从机器外部测出来的:互联网上的某个东西每分钟连接一次你服务器的端口,并记录它有没有应答。这是唯一算数的定义,因为它能捕捉到你自己的电脑无法上报的情况——机器睡着了、网断了、进程卡死了。"我的电脑整周都开着"不是一个在线率数字。
百分比听起来很抽象,直到你把它换算成时间。以 30 天的一个月计算:
| 在线率 | 每月允许的停机时间 | 大致相当于 |
|---|---|---|
| 99% | 约 7 小时 12 分钟 | 每个月都丢掉一整个晚上 |
| 99.5% | 约 3 小时 36 分钟 | 一个糟糕的下午 |
| 99.9% | 约 43 分钟 | 一次重启外加一次慢启动 |
| 99.99% | 约 4 分钟 | 几乎察觉不到 |
把这张表和上一节放在一起读,家庭托管的问题就一目了然:仅仅一次 Windows Update 的重启周期,就已经吃掉了 99.9% 那一个月里的大部分额度。 不是什么危机,也不是硬件故障——只是一次例行重启。来两次这样的重启,再加上一个机器睡过去的晚上,你就掉到 99% 的水平了,而其实什么真正的问题都没发生。
如果你想知道自己的真实数字而不是靠猜,把一个免费的外部在线监测服务指向你服务器的地址和端口,让它跑满一个月。它会告诉你一些你原本不知道的事,通常都发生在你睡着的时段。作为参照,HytHost 按目标 99.9% 在线率运行——同一把尺子,用同样的方式测量。
一台不停机的电脑真正要你付出什么
一台永不关机的机器,和你晚上偶尔用一用的机器是两回事。一年下来它会累积大约 8,760 小时的运行时间——风扇转个不停、硬盘一直工作、热量持续往外冒。它总得放在某个地方,如果那个地方是你的卧室,你会切身体会到七月凌晨三点的机箱风扇有多响。这些都算不上戏剧性,但恰恰是人们想象"就这么开着"时会忘掉的部分。
它还会全程耗电,而这确实会体现在账单上。不过那是钱的问题,不是在线率的问题,所以它有自己的专门指南——具体算法请看一台 Minecraft 服务器到底要花多少。
而更大的意外通常并不在机器本身,而在它背后的那条线路。
家庭宽带是为下载设计的,不是为对外服务设计的
你的下载速度在这里无关紧要。服务器是在发送——向每一个连入的玩家持续推送世界更新——所以你的上传速度才是能有多少人流畅游玩的天花板。家庭套餐通常卖的是一个很大的下载数字和一个小得多的上传数字,而你的服务器只在乎后面那个小数字。当服务器"除了房主之外对所有人都卡"时,原因往往就在这里。
你的地址会毫无预警地变化
大多数家庭宽带拿到的是动态 IP:路由器重启时会变,线路掉线时会变,运营商按自己的节奏也会变。每个把你的服务器存进列表的朋友,现在手上都是一条失效记录,而你又得把新地址再发一遍。动态 DNS 服务能掩盖这个问题,它给你一个稳定的主机名来跟随不断变化的地址——在你把地址发出去之前就设好,而不是之后。
有些宽带根本没法对外提供服务
这一条常常在人们排查了好几个小时之后才浮出水面。很多运营商把家庭用户放在运营商级 NAT 后面,也就是说你没有属于自己的公网地址——你是和别人共用的。在这种情况下,无论你把路由器配置得多正确,端口转发都不可能生效,因为根本没有一个可供转发的地址。还有些运营商直接封掉常见的服务端口,或者在合同条款里禁止运行服务器。如果端口转发配置得完美无缺,外部玩家却依然连不上,那么下一个该查的就是这件事。
你的家庭 IP 会变成服务器地址
要让家门之外的人连进来,你得在路由器上转发一个端口——从那一刻起,你服务器的地址就是你家的公网 IP 地址。每一个你邀请的人都有它。他们转发给的每一个人也有,任何在截图、Discord 消息或服务器列表里看到它的人也有。
关键的变化在于攻击目标变成了什么。针对托管服务器的攻击,打的是那台服务器。针对你家庭地址的攻击,打的是整个家:你的宽带、家人的手机、某人的工作通话、电视。你没法从内部过滤它,因为流量在抵达你的路由器之前就已经把线路灌满了。关掉服务器也没用——地址还是那个地址。
这是家庭托管和数据中心托管之间唯一一个在家里无解的差别。托管服务器的地址是可替换的,它属于服务器,而不属于你居住的地方,而且它背后有 Voxility DDoS 防护,在攻击抵达之前就把它吸收掉。对于只和熟人共享的私人服务器,家庭托管是一个合理的风险。而对于任何面向公众的东西,这正是大多数人最终放弃的原因。
自己的电脑、VPS 还是托管主机:谁来干活
这三种方式都可以做到全天候在线。区别不在这里。区别在于它不在线的时候,责任落在谁头上——而这才是值得认真决定的问题,因为它是你每周都要面对的。
| 你自己的电脑 | 你租的 VPS | 托管型游戏主机 | |
|---|---|---|---|
| 谁给系统和 Java 打补丁 | 你 | 你 | 主机商 |
| 凌晨 4 点卡死了谁去重启 | 你,等你醒了 | 你,或者你写的脚本 | 自动完成,外加计划内重启 |
| 谁来扛 DDoS 攻击 | 没人——打的是你家 | 看服务商 | Voxility DDoS 防护 |
| 停电或断网时会怎样 | 所有人掉线 | 不受影响 | 不受影响 |
| 谁先发现它下线了 | 你的玩家 | 你的玩家,除非你做了监控 | 有人替你监控 |
| 做到稳定 24/7 所需的精力 | 高,而且是长期的 | 一次性很高,之后持续投入 | 不需要 |
中间那一列是人们最容易误判的。VPS 立刻解决了两个最难的问题——它有一个真正的地址,还有永不睡眠的硬件——但它交给你的是一台裸的 Linux 机器,并且让你成了系统管理员。Java 由你安装和更新,防火墙由你配置,开机启动服务器的服务由你编写,安全补丁由你打,备份由你搭建并测试。这些都不难,但从此都永久归你管,而一台没打补丁、暴露在公网上的机器与其说是服务器,不如说是负担。
不用改电源设置,不用写开机脚本,不用凌晨四点爬起来重启——HytHost 的 Minecraft 服务器,无论你的电脑开不开着都在线。
查看 Minecraft 套餐如果坚持自建,怎样让服务器一直活着
如果你打算继续用自己的机器,下面这些做法能把一台家用服务器从"我想起来的时候它开着"变成真正可靠。请按这个顺序做——光是前两条就能解决大部分掉线。
别让机器进入睡眠
把电源计划设成永不睡眠、永不关闭硬盘,笔记本的合盖动作设为"不采取任何操作",并禁用休眠。在 Windows 上还要关掉 Fast Startup——正是它导致机器看起来干净地重启了,而你的启动任务却根本没运行。这些设置,决定了你是每晚都掉一次线,还是一次都不掉。
让服务器开机自动启动
一次计划外的重启应该只花掉你一分钟,而不是一个晚上。在 Linux 上,一个 systemd unit 既能在开机时启动服务器,也能在它退出时把它重新拉起来:
[Unit] Description=Minecraft server After=network.target [Service] User=minecraft WorkingDirectory=/opt/minecraft ExecStart=/usr/bin/java -Xms2G -Xmx4G -jar server.jar nogui Restart=always RestartSec=15 [Install] WantedBy=multi-user.target
在 Windows 上对应的做法是一个 Task Scheduler 任务,并且要设置成开机时运行而不是登录时运行——登录时运行意味着在有人登录之前什么都不会发生,而这在一次通宵重启之后就完全失去了意义。
加一个看门狗,因为"在运行"不等于"能用"
这是几乎所有人都会跳过的一步,却是能抓住最严重故障的一步。一台内存耗尽或死锁的 Minecraft 服务器依然是一个正在运行的进程:systemd 看到它还活着,于是什么都不做,而玩家那边则是连接超时。唯一可靠的检测方式,是看端口到底应不应答。
#!/bin/bash
while true; do
if ! timeout 5 bash -c "echo > /dev/tcp/127.0.0.1/25565"; then
systemctl restart minecraft
fi
sleep 60
done
粗糙,但管用:它每分钟检查一次服务器端口是否应答,不应答就重启。把它也做成一个独立服务运行,这样它同样能挺过重启。
主动重启,别等它撑不住
长时间运行的 Java 服务器会随着内存碎片化和插件累积状态而逐渐变慢——就是那句经典的"早上还好好的,到晚上就卡成一团"。在安静时段安排一次每日定时重启,不到一分钟就能把这一切重置。在聊天里用倒计时提醒玩家,免得有人丢掉正在盖的建筑,并挑一个没人在线的时段。
把备份放在这台机器之外
放在同一块硬盘上的备份不算备份——它只是等着同一块盘一起坏掉的第二份副本。按计划把世界文件夹复制到另一块硬盘、另一台机器或云存储上。然后做那件几乎没人做的事:真的还原一次,并确认世界确实能加载。没有测试过的备份只是一种猜测。
给地址一个稳定的指向
配置动态 DNS,让你的玩家连接一个会跟随你不断变化的地址的主机名,而不是一个会过期的数字。它不花钱,还能省掉那条反复出现的"服务器挂了"消息——那句话真正的意思其实是"IP 变了"。
什么时候这份折腾就不值得了
上面这些都确实管用。不少人就是靠这些步骤,把一台家用服务器稳稳跑了好几年。但有三个时刻,这份投入会不再划算,它们到来时值得你认出来:
- 你不在的时候有人在玩。 从服务器需要在你睡觉、上班或周末外出时保持在线的那一刻起,你就等于随时待命——而放在你家里的机器,没法从别人家的厨房里修好。
- 已经有别人依赖它了。 一个装着几个朋友数月建造成果的世界,已经不再是个人爱好项目。过去只是不便的一次故障,如今是所有人的损失。
- 这个月你已经手动重启了两次以上。 这就是"看门狗其实是你自己"的信号,而这种情况不会自己好转。
反过来的情形同样真实,也值得直说:如果你在局域网里玩,如果这台机器本来就因为别的原因开着,或者折腾这件事本身就是目的,那么自建依然是正确答案,上面的一切都不适用于你。
如果你已经跨过了其中一条线,那么改用托管的 Minecraft 服务器,等于把整份清单——电源设置、开机脚本、看门狗、计划内重启、异地备份和 DDoS 过滤——交给以此为职业的人。套餐可以从小规格起步,并随着服务器成长原地升级,所以你今天不必决定最终规模。而如果你更想先试试免费方案,这是个合理的问题,并且有它自己的答案:请看对免费 Minecraft 主机的坦诚剖析。
常见问题解答
如果服务器跑在你的电脑上,那就是的——服务器是那台机器上的一个程序,所以它睡眠、重启或关机时,服务器也跟着一起没了。除了把服务器搬到一个永远开着的地方,没有别的办法绕开这一点。如果你要留在家里跑,请禁用睡眠和休眠、在 Windows 上关掉 Fast Startup,并把服务器设置成开机自动启动,这样一次意外重启就不会让它下线一整天。
按顺序做四件事:阻止机器进入睡眠、让服务器开机自动启动、加一个每分钟检查端口并在无响应时重启服务器的看门狗,以及在安静时段安排一次每日重启。其中看门狗最重要——一台内存耗尽的服务器仍然是一个"正在运行"的进程,所以别的机制都察觉不到它其实已经不工作了。除此之外,你就只能指望在没人照看的时候,电力和网络别出问题。
每月约 43 分钟。作为对比,99% 大约是 7 小时 12 分钟,99.5% 约为 3 小时 36 分钟,99.99% 约为 4 分钟。这也正是家用服务器很少能达到 99.9% 的原因——仅仅一次 Windows Update 的重启周期,就可能把当月的大部分额度吃掉,而其实什么问题都没真的发生。在线率是由外部某个东西探测你的端口测出来的,而不是看机器有没有开机。
软件是免费的,也没有任何许可条款拦着你,从这个意义上说可以。但你换来的是运维上的负担:机器必须永不睡眠、能挺过重启、卡死时能自己重启、还要自己保存备份,而你的家庭宽带必须能承受持续为玩家提供服务。上传速度决定了有多少人能流畅游玩,而动态 IP 或运营商级 NAT 可能让服务器从外部完全无法访问。如果你想要的是免费的主机服务而不是免费软件,那是另一个问题——请看我们关于免费 Minecraft 主机的指南。
按可能性从高到低:没人碰键盘,所以机器进入了睡眠;Fast Startup 让关机看起来像重启,于是你的启动任务根本没运行;一次自动更新在夜里重启了它;或者服务器内存耗尽卡死了,却并没有真的退出。最后一种最阴险——进程还在,所以没有任何东西去重启它,而玩家那边却是连接超时。用一个检测端口而不是检测进程的看门狗,就能抓住它。
你不需要固定 IP——动态 DNS 会给玩家一个跟随你变化地址的主机名,免费就能解决这个问题。VPS 则是更大的一步:它解决了地址问题,也给了你永不睡眠的硬件,但它交给你的是一台需要自己管理的裸 Linux 机器,于是更新、防火墙、开机服务和备份都成了你的事。如果你只想要"永远在线"这一部分,而不想干系统管理的活,托管型游戏主机能给你同样的结果,而那些活已经替你做好了。
让别人替你熬夜
电源设置、开机脚本、看门狗、计划内重启、异地备份和 DDoS 过滤——全部由我们处理,目标 99.9% 在线率。无论你的电脑开不开着,你的世界都在线。
Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours