我的世界服务器tps低,直接原因是主线程每秒钟能处理的游戏刻(tick)数量不足20,这通常由硬件瓶颈、插件冲突或游戏机制超载三方面导致,按优先级依次排查即可解决。
很多腐竹和服主都遇到过这种情况:服务器在线人数明明不多,但玩家走动时就像在放慢动作,方块破坏后要过一两秒才掉落,背包物品也会出现瞬移回溯,这就是典型的TPS(每秒游戏刻数)过低,我之前也折腾了好几个通宵,踩了不少坑,今天把排查和解决的思路一次说清楚,希望能帮到正在头疼的你。
服务器tps低怎么排查:先确认表现,再定位根因
经常有朋友在服务器交流群里直接问“我的世界服务器tps低怎么排查”,但其实第一步不是看代码,而是先确认问题到底出在哪个环节,TPS低的表现各有不同,对应的解决方向也完全不一样。
- 全体玩家同时卡顿,客户端右上角或输入
/tps显示的数值长期低于15,这种情况基本锁定在服务器端。 - 只有某个特定区域的玩家卡顿,走出那个区域就恢复正常,这说明问题集中在特定区块的实体数量或红石机械上。
- 服务器TPS正常,但玩家走路时自己感觉飘,或者攻击不反馈,这大概率是网络延迟或服务器核算力分配问题,跟TPS关系不大。
你可以用 /forge tps 或 /spark tps 来查看各维度的实时TPS,这里说个关键操作:在聊天框输入 /spark health ,如果输出中显示 CPU核数 或 GC耗时 占比过高,就直接从硬件和Java虚拟机参数方向入手。
硬件层面的瓶颈:算力不够和内存分配失衡
CPU单核性能决定了TPS上限
行业共识认为,Minecraft服务器是典型的单线程游戏,绝大多数计算任务都压在一个核心上,这就意味着你用多好的多核服务器,只要单核主频不够高,TPS照样跑不满20。
如果预算有限,优先选择单核主频在 0GHz以上 的处理器,比盲目加钱上更多核心的服务器更划算,使用面板服的话,找一下客服确认分配到的是不是独立核,共享核在晚高峰时段经常被邻居吸走算力。
内存分配不是越大越好
很多服主有个误区,觉得内存给得越多越流畅,实际上Java虚拟机在分配过大内存时,GC垃圾回收时会长时间停顿,反而让TPS掉得更厉害。
- 10人以下的小服:分配4GB到6GB足够
- 10到30人的中型服:分配8GB到10GB比较合理
- 超过30人或跑整合包:先上12GB,再观察GC停顿时间
你可以加一个启动参数 -XX:+UseG1GC ,同时在JVM参数里加上 -Xlog:gc 来查看GC日志,如果日志显示每次Full GC耗时超过0.5秒,就要考虑降低堆内存上限或优化插件。
插件与模组层面的优化方案
用Spark定位具体卡顿源
“我的世界服务器tps低的插件优化方案”里,最重要的一条就是用数据说话,不要凭感觉关插件,在服务器控制台执行 /spark profiler --timeout 30 ,等30秒后执行 /spark profiler --open ,它会生成一个火焰图,里面每条长长的彩色横条就代表一个占CPU时间较多的方法调用,直接看排名靠前的那几个,你会发现要么是某个实体疯狂寻路,要么是某个插件在频繁读写配置文件。
常见的高消耗插件和替代方案
有些功能性插件确实好用,但对TPS的打击也是毁灭性的,以下几个比较典型:
- 地皮插件(如PlotSquared):如果安装了较老版本,每次玩家移动都会触发权限检查,换用新版本后发现TPS提升明显,因为新版重写了核心算法。
- 全息图插件(如HolographicDisplays):全息图的每一行都是一个隐形盔甲架,攒了一千行之后,每帧都在渲染计算,如果全息图数量超过300行,优先考虑精简内容或用FastAsyncWorldEdit的纹理渲染替代方案。
- 自定义NPC插件(如Citizens):每个NPC都拥有独立的寻路AI,大量NPC聚集时对CPU是灾难,建议把NPC数量克制在20个以内,并启用
Citizens的寻路缓存选项。
组件的合理取舍
我个人的习惯是只保留核心功能组件。EssentialsX插件 只做基础经济,一个 LuckPerms权限管理 就够了,再加 CoreProtect方块记录 作为防熊底裤,其他的所谓玩法增强、礼包福利、排行榜之类的插件,能合并就合并,每种功能只留一个,执行一次 /plugman list 把插件列表截图存下来,每次混乱时好对照回滚。
游戏机制与区块加载:隐藏的TPS杀手
红石机械和实体数量:多数情况下的罪魁祸首
不管服务器配置多好,只要有一群玩家在出生点附近造了一个高频红石大机器,周围所有玩家的TPS都会崩到10以下,你可以在地图里搜索 红石中继器的数量,如果发现某个区块内红石元件数量超过200,基本上就是它了。
实体同理,用 /forge entities 或 F3+L 打开实体数量面板,如果单个区块内实体超过100个,哪怕全是经验球,也会导致TPS下降,这时候可以考虑装一个 EntityCulling模组,它能让玩家视角范围外的实体跳过AI计算,有效缓解压力。
区块加载的压力
多人服务器里常有人跑到几万格外的区块去建房子,这些区块会被长期保留在内存里,每加载一个区块,就意味着主线程要定期给它做实体逻辑运算和方块光照检查,行业共识认为,一个中等规模服务器长期保持活跃加载的区块数量超过3000个,就会对TPS产生明显压力。
建议定期查看 /spark tps 的最后一个维度“Chunk”数值,如果持续偏高,就明确告诉玩家:“未有人活动的非出生点区块会在15天后自动回收”,这需要通过配置文件里的 region.unload 时间段来设置。
网络问题与地域因素:不要把所有锅都甩给服务器
如果你的服务器TPS稳定在19.8以上,但玩家还是喊卡,那就得把目光转向网络层面,比如一个成都的玩家连到跑在广州的服务器,物理延迟起码40毫秒以上,这种情况下TP S是正常的,玩家体验还是不好。
可以考虑用 BungeeCord或Velocity代理端 来加速国内不同地域玩家的连接,不过这套东西维护成本较高,普通小服反而容易加剧问题,多数情况下,服务器上装的 ViaVersion 版本兼容插件会导致额外网络开销,这类跨版本插件建议在玩家较少时再启用。
针对低配置电脑开服和模组整合包场景的建议
如果你的电脑或小主机配置不高,想开个2到3个朋友一起玩的小服,那目标不要定太高,控制T P S在18以上就算合格,这种场景下又跑重模组整合包又开光影不现实,但遵守几条底线就可以在有限配置里保住TPS:
- 使用 Fabric或不含OptiFine的纯净版本,比Forge全家桶省下不少资源
- 调低
server.properties里的view-distance到3或4,肉眼影响不大,但TPS提升明显 - 限制玩家家自动水机和动物繁殖数量,给机器划一道规定红线
- 开服前关掉电脑上的浏览器、微信等占内存的程序,避免物理内存不够触发系统换页
Q&A:我的世界服务器tps低怎么解决
问:用了spark检查后,发现是某个地皮插件占用率高,但直接关掉插件又怕玩家闹,有折中方案吗?
答:先检查该插件是否有更新版本,很多时候是旧版bug导致的性能损耗,另外在插件配置文件里把自动保存周期从每分钟改成每10分钟,如果这两步没解决,就再装一个 Timings 记录插件和地皮插件的交互数据,定位到具体是哪个事件触发的开销,能禁用的触发事件就关掉。
问:需要花钱去买专门的优化工具吗?
答:目前多数情况下的性能问题,用 Spark、EntityCulling 和 Lithium 这类免费优化模组都能覆盖,花钱购买所谓“智能优化端”往往性价比不高,如果预算确实宽裕,不如升级到单核主频更高的硬件或网络质量更好的机房,这些实际效果更直接。
问:整合包服务器里总是有玩家反馈掉线后回来TPS就低,这是为什么?
答:玩家掉线后,其所在的区块进入持久化状态,但关联的宠物、盔甲架和掉落物仍在载入,这会持续占用主线程计算资源,解决思路是设置时间清理空闲区块,同时在配置里开启 延迟实体清理 功能,服务器会在无人的区域每30秒批量回收已闲置的实体,这个机制在部分模组中称为实体休眠,是节省TPS的有效手段。
说到底,TPS优化不是一次性工程,而是一种持续观察和微调的习惯,每次大版本更新或新增插件后,都要跑一下spark做好前后对比,硬件参数和插件配置固然重要,但维护一段长时间的高TPS体验,更多靠的是对服务器健康度的敏感度,抓住这几次优化机会,你的服务器在低TPS泥潭里挣扎的日子就能很快到头。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/797615.html


![[中配]我的世界服务器优化技巧:修复卡顿并提高TPS - CygnusMC](https://i0.hdslb.com/bfs/archive/dc6c83526e94d5dfc8f41b6ce3de0acb33083305.jpg)