说到PaperMC的优化技巧,很多服主可能只知道改改内存参数就完事了。但作为一个把1C1G小鸡榨出3倍性能的老玩家,我发现PaperMC其实藏着不少”黑科技”。就拿我最近折腾的那台Contabo垃圾VPS来说,原版服务端直接卡成PPT,但调教后的PaperMC居然能稳定带5个玩家——这中间的优化门道,值得好好说道说道。
GC调优的玄学艺术
大多数人只知道用-Xmx
限制内存,但真正影响性能的反而是垃圾回收策略。我测试过,在1G内存环境下,ZGC(-XX:+UseZGC
)比默认的G1GC能减少70%的卡顿时间。不过要注意,ZGC在Java 17上的表现才比较稳定,用旧版本反而可能适得其反。
配置文件里的隐藏选项
PaperMC的paper-world-defaults.yml
里有个不起眼的参数max-auto-save-chunks-per-tick
,默认值是24。把它调到6-8能显著降低地图保存时的CPU峰值,实测TPS波动从±5降到了±2。这招特别适合机械硬盘或者超售严重的VPS。
实体控制的骚操作
在spigot.yml
里可以设置entity-activation-range
,把动物的激活距离从默认的32降到16,内存占用直接少了15%。更狠的是用/paper dumpentities
命令找出”实体大户”,有次我发现某个玩家的钓鱼机竟然卡住了200条鱼!
说到这个,突然想起个趣事:有次我给服务器加了entity-per-chunk-limit
限制,结果第二天就收到玩家投诉说”刷怪塔不工作了”。你看,优化和游戏体验之间的平衡,有时候真的需要反复调试。
网络层的冷门技巧
PaperMC的use-alternate-keepalive
选项堪称救星,特别适合跨国服务器。启用后,欧美玩家连亚洲服务器的延迟从300ms降到了150ms左右。原理其实很简单:它把keepalive包改成了UDP协议,但效果立竿见影。
最后分享个血泪教训:千万别在低配机上用--forceUpgrade
升级世界!我有次手贱点了这个,结果1G内存直接OOM,地图文件差点报废。现在我都用--erase-cache
慢慢来,虽然慢点但稳妥。
说实话,PaperMC的优化就像拼乐高,每个小调整都可能带来意外惊喜。你们还发现过什么不为人知的调优技巧?欢迎来交流——毕竟在座的各位,谁还没被OOM坑过呢?
评论