我的世界服务器托管
游戏服务器托管
游戏服务器循环运行在一个核心上,决定玩家是否抱怨的数字是该核心的速度以及它能否持续无中断运行。我们选用市场上时钟频率最高的芯片,将其固定,用isolcpus和tickless模式将内核管理任务移走,然后在其前面加上游戏层过滤,这样针对你社区的流量攻击就不会变成你的支持工单。
为什么这个配置
NITRO在5.9 GHz的Zen 5上运行,核心经过固定和隔离,即使在满载服务器下也能保持帧时间抖动低于一毫秒。L7过滤配置文件了解Source引擎、FiveM、Minecraft和TeamSpeak的流量模式,因此它会丢弃垃圾数据而不丢弃你的玩家。
我们会部署什么
规模确定
根据单线程余量而不是核心数来调整大小。一个权威游戏循环运行在一个核心上。一个128 tick的射击游戏有12个槽位,需要一个完整的NITRO核心和4 GB内存。如果Rust或大型Source服务器超过100名玩家,则需要两个核心的余量,因为实体变化可能导致循环峰值。带有40名玩家和插件栈的Minecraft:4个核心,12 GB,大部分是堆内存。保持稳态负载低于60%。
Tick 预算计算
Tick 是硬性截止时间。64 tick 时每帧 15.6 毫秒;128 tick 时 7.8 毫秒。该预算覆盖每个连接玩家的物理、命中检测、AI 和网络序列化。一次超时服务器会丢一个 tick。玩家会感到橡皮筋效应和丢失的射击。分析 p99 帧时间,绝不用平均值。平均值保持平坦,而回合开始、地图变更和大规模实体生成会直接突破预算。将稳态帧时间控制在预算一半以下,这样峰值仍在预算内。
L7 游戏过滤的实际作用
容量清洗只防止管道被填满,对由合法数据包组成的查询洪水无济于事。Source 引擎从任何地址响应 A2S_INFO,因此攻击者发送小查询,你的 tick 循环为回复付出代价,或将其反射到别人身上。第 7 层过滤意味着清洗器说协议:查询的挑战-响应、握手源的速率限制、在到达游戏进程前丢弃畸形包。15 Tbps 的内联容量是底线。协议感知是保持循环按时的部分。
常见问题
- 为tick循环购买突发或共享vCPU。持续负载会降低加速时钟频率,p99帧时间大约翻倍,玩家在图表显示之前就会感觉到。在NITRO上固定核心。
- 在同一核心上运行游戏服务器及其MySQL或Redis后端。fsync停顿或GC暂停会进入tick窗口,服务器在负载下丢帧。
- 根据平均帧时间调整大小。均值保持平稳,而回合开始、地图轮换和大量实体生成会超出预算。根据p99(在事件期间测量,而不是空闲时测量)来配置。
调整配置
- CPU调度 — Pinned + isolcpus + tickless · €18
- DDoS保护 — Game-layer L7 filtering · €24
- 其他所有选项 — 秒级指标和告警 · €5