Minexa说明书
进阶性能优化

综合优化:让手机服稳定运行

从服务端配置、插件、世界预生成到手机散热与保活,一套按收益排序的优化清单。

你装了三个“优化插件”,把内存从 1024 调到 3072,视距砍到 6,还下了个 Chunky 准备预生成。折腾一下午,服务器每天下午照样开始卡,手机背面烫得放不住手。

问题多半不在你做得不够多,而在顺序:先把手机烫到降频,再去调配置,等于一边踩油门一边拉手刹。这一页给一套按“收益 ÷ 成本”排好序的清单,从上往下做,每一步都能验证有没有用。

整套流程有个固定顺序,记住这一句就够了:先免费的后花钱的,先能退的后难退的。做完一遍,大多数手机服能从个位数 TPS 回到 18 以上。

本页要点
  • 顺序:先视距 → 再内存 → 再清实体红石 → 最后才换核心。

  • 发热降频比配置写错更常见,卡的时候先摸手机背面。

  • 插着电开服,但别在充电时开着省电模式,它会压 CPU 频率。

  • 每 1~2 天重启一次,能清掉累积的实体和碎片。

  • 手机可用空间留 2 GB 以上,世界和备份都要写盘。

优化顺序:先做不花钱的#

顺序做什么收益代价与风险
1散热与供电:取壳、通风、插电、关省电大,决定会不会降频无,随时可做,随时可退
2视距与模拟距离大,区块数按平方下降玩家视野变近,远处区块静止
3内存上限中,减少 GC 和“被系统杀掉”给太多反而先被杀
4实体、红石与插件模组中,去掉每刻都在跑的东西功能变少
5世界预生成中,把跑图时的卡顿提前挪走时间和存储,生成期间很烫
6其他:清实体、换核心、换设备小到中有的会改变玩法,有的要花钱

排这个顺序的理由很朴素:前两项不花钱、能回退、当场能看出效果;插件和预生成要动你的内容;换核心和换设备最贵,而且一旦不满意很难退回去。别从最贵的一项开始。

第一件:散热、供电和省电#

手机服的性能上限,很多时候不是 CPU 算不动,而是它被热到降频了。

SoC 温度到阈值就会降主频(thermal throttling)。主频一降,每刻耗时变长,TPS 往下掉;温度降下来再恢复。表现出来就是:刚开服很顺,一小时后开始卡,把手机放凉十分钟又好一点。这就是“越玩越卡”最常见的原因,跟你装了什么插件基本无关。

要做的事就四件:

  1. 插着电开服。 长时间跑服务端是个持续负载,靠电池放电撑不住,系统还会为了省电进一步压性能。

  2. 把热散出去。 取掉厚保护壳,别叠放、别压在枕头或被子里、别放床上 —— 床垫最不透气,还容易堵住背面。放桌面、瓷砖、金属架上,避开阳光直射和车里。

  3. 关掉省电和后台限制。 插着电也把省电模式关掉:省电模式会限制 CPU 频率和后台活动,不会因为你插了充电器就自动退出。再把 Minexa 加进电池优化白名单。保活页的「去设置电池优化」只是把你送到系统页面,需要你自己点确认,详见 后台保活。

  4. 少开后台。 相机、导航、视频通话、大型游戏都在抢 CPU 和内存;屏幕常亮方便看状态,但屏幕是手机上最大的发热源,长期挂机建议关掉。

判断是不是降频,用“摸”的最快

卡的时候先摸一下手机背面。烫得握不住,八成已经在降频了 —— 这时候去调插件、加内存都没用,先让它凉下来再测。放凉之后立刻恢复流畅,基本就能确认是热的问题,而不是配置写错了。

第二件:视距和模拟距离#

这是手机服性价比最高的一次改动,理由在 视距与模拟距离 里详细算了:视距每加一格,区块数按平方增长。

手机内存view-distancesimulation-distance
4 GB6~86
6 GB86~8
8 GB8~108

改完必须重启服务端(先停止再启动),一次降一格,降完玩一轮再决定。模拟距离别小于 4,不然农场和刷怪塔会大面积停摆。

第三件:内存#

内存的坑和专业说法都在 内存分配,这里只留三条能直接用的规则:

  • 不要超过设备标称内存的 60%。4 GB 手机给 1024~1536 MB,6 GB 给 1536~2048 MB,8 GB 给 2048~3072 MB。

  • 一次只加 256 MB,跑一晚上再决定。加太多,先被杀的是整个 Minexa 进程,而不是服务端报一个干净的 OutOfMemoryError。

  • 只改「JVM 内存上限」这一项。Minexa 只设 -Xmx,不设 -Xms,也不要抄 PC 教程里的 Aikar Flags —— 那是给几十人 PC 服调的,参数还不一定被你的 Java 版本认。

第四件:插件、模组和实体#

到这一步才开始动内容。方法是一半一半地排除:

  1. 记录基线:改之前先玩 20 分钟,记下 TPS、内存占用和体感(谁在跑图、几个人在线)。

  2. 停掉一半插件:在 插件与模组 页逐个停用,或者先把 jar 移出目录,然后重启服务端。

  3. 用同样的场景再玩 20 分钟:还是那几个人、还是跑图。有明显改善,问题就在停掉的那一半里;没有改善,就换另一半。

  4. 锁定到单个插件后:先看它有没有新版本,再考虑换替代品或者干脆不用。

几个容易踩的点:

  • “优化插件”不一定在优化。 那种每刻扫描全服实体、定时清理掉落物的插件,本身就在制造负载。有些还和别的插件互相打架。

  • 反作弊和统计类插件有固定成本,人越多越贵。小服不必上全套。

  • spark 需要你自己装。 它不是 Minexa 自带的功能,装完重启,用它的命令采样,才能看到到底是哪一类东西在吃每刻时间。

  • 实体是有上限的。 掉落物、动物、盔甲架、展示框、矿车、船,几千个就开始拖慢每刻。刷怪塔和高频红石是重灾区。

  • 漏斗和刷怪笼是隐形负载。 每个漏斗要定期尝试吸取物品,成排的漏斗、漏斗矿车和自动分类系统在人多时会明显吃掉每刻时间;刷怪笼附近挤着的怪物,寻路也是每一刻都在算。

别用 /reload 修一切

装完插件、改完配置,用 /reload 重载看起来省事,但它会让插件在没重新初始化的状态下继续跑,状态容易错乱,症状往往是“重载之后某个功能半死不活”。

正确做法是停服再启动。装插件、改 server.properties、换世界,都需要真的重启一次。

第五件:预生成世界#

玩家第一次走到某个坐标,服务端要现场生成地形:算噪声、放结构、定生物群系。这是单刻耗时尖峰最常见的来源,也是“有人一跑图全服就卡”的元凶。

预生成就是把这件事提前做完,跑图时服务端只需要从磁盘读,不用现算。它不能消灭卡顿,只能把卡顿挪到你不在玩的那几十分钟。

  • 工具要自己装。 Chunky 是最常用的预生成插件,Minexa 不带,从插件页装或者上传 jar,装完重启,在控制台按它的用法指定世界和半径。

  • 代价一:时间。 手机上生成上万个区块通常要跑几十分钟以上,具体看 CPU 和散热;期间别玩、别同时备份。

  • 代价二:存储。 生成结果写在 world/region/ 下,体积随半径平方增长,几百 MB 到几 GB 都常见。先看手机剩多少空间。

  • 代价三:发热。 预生成是持续满负载,务必插电、放通风处,最好挑晚上做。

半径别贪。小服的常用活动区通常 1000 格以内就够(约 62 个区块的半径),想宽松一点可以做到 1000~2000 格。一上来就打 5000,手机多半会先因为过热降频,跑得比现生成还慢。

Paper 系自带的配置文件,建议先别动。 Paper 会在服务端目录里生成自己的配置(paper-global.yml、paper-world-defaults.yml),里面的键名和默认值随版本变化,抄攻略很容易写出当前版本不认识的键 —— 这种错误通常不报错,只是静默无效,你以为调过了。真要动,先备份整个服务端目录,一次改一项,改完看启动日志有没有警告,并且以你目录里实际生成的文件和 Paper 官方文档为准。

第六件:日常维护(重启、存储、后台)#

前面五件是把性能“调上去”,这一件是让它别一直往下掉。

定期重启。 服务端跑久了,掉落物、动物、内存碎片会缓慢累积,模组服更明显。表现出来的就是“开服第一天很顺,第三天开始卡”。做法很简单:每 1~2 天停一次、再启动,挑没人在线的时候做。重启要正常停止,不要用强制停止,前者会发 stop 让服务端存盘,最多等 180 秒;后者会丢未保存的数据。如果嫌麻烦,可以用自动化定时执行,见 自动化任务。

留足存储。 世界、logs/、备份和预生成结果都在吃空间。可用空间低于 1 GB 时,写区块和做备份都可能失败,最坏的情况是存档写了一半。建议长期留 2 GB 以上:先把手机里没用的视频和安装包清掉,再考虑加大预生成半径。备份体积大致等于世界体积,见 备份策略。

别让后台抢资源。 除了保活设置,还要注意别在开服时同步网盘、下载大文件、跑系统更新。

几件能省一点的小事:

  • 实体同步范围:server.properties 高级配置里的「实体广播范围」entity-broadcast-range-percentage,默认 100。调低能减少实体数据的发包,代价是远处的怪物和玩家动起来会“定住”。

  • 链式邻居更新上限:max-chained-neighbor-updates,默认 1000000,用来防极端红石电路造成的连锁更新。调低有效,但会改变红石行为,不懂红石就别碰。

  • 掉落物清理:/kill @e[type=item] 只清掉落物,比一键清所有实体安全得多。后者会连村民、宠物、盔甲架一起清掉。

  • 换核心:Paper 系之间换(比如 Spigot → Paper)通常有收益,但别指望它治好一个插件堆出来的服。换之前先备份。

怎么验证到底有没有变快#

优化最容易变成“感觉快了”。想真的知道有没有用,就固定变量:

项目怎么固定
场景同一个世界、同一个出生点,或者同一条跑图路线
人数至少 2 人,别一次 2 人一次 6 人
时段同一时间段,别拿晚上和白天比
时长每轮至少 20 分钟,包含一次跑图
改动一轮只改一项

记录方式很简单:改之前记 TPS / 内存 / 手机烫不烫,改之后记同样三项。TPS 的读法和目标值在 TPS 与 MSPT,内存条的含义在 内存分配。

如果某一项改完毫无变化,别硬扛 —— 说明瓶颈不在那里,回去看 TPS 与 MSPT 里“三种卡”的区分:甚至可能根本不是服务端的问题。

上机自查
  • 概览 TPS 稳定在 18 以上,不再是一阵一阵地掉。

  • 玩一小时之后摸手机背面,没有烫到握不住。

  • 概览内存条没有长期贴在 100%。

  • 手机可用空间还有 2 GB 以上。

  • 能说出自己最后一次重启是什么时候,以及是不是正常停止的。

  • 改过的东西都只改了一项,并且记下了改之前的数据。

下一步#

读到这儿了,给你点个赞。如果这页内容帮你解决了问题,说明说明书的方向是对的;如果发现错误、过时信息或看不懂的地方,欢迎到 GitHub Issues 告诉我们。

⚡ 回到极速开服 📖 查术语表