- Vanilla(所有核心均适用)
- Spongeforge
- Catserver-async
- Bukkit 以及基于 Bukkit 的核心(如 Spigot、Catserver)
- Spigot 以及基于 Spigot 的核心(如 Paper)
- Paper 以及基于 Paper 的核心(如 Purpur)
- paper.yml">paper.yml
- no-tick-view-distance
- delay-chunk-unloads-by
- max-auto-save-chunks-per-tick
- prevent-moving-into-unloaded-chunks
- entity-per-chunk-save-limit
- despawn-ranges
- per-player-mob-spawns
- max-entity-collisions
- update-pathfinding-on-block-update
- fix-climbing-bypassing-cramming-rule
- armor-stands-tick
- armor-stands-do-collision-entity-lookups
- tick-rates
- alt-item-despawn-rate
- use-faster-eigencraft-redstone
- disable-move-event
- mob-spawner-tick-rate
- optimize-explosions
- enable-treasure-maps
- treasure-maps-return-already-discovered
- grass-spread-tick-rate
- container-update-tick-rate
- non-player-arrow-despawn-rate
- creative-arrow-despawn-rate
- anti-xray
- remove-corrupt-tile-entities
- nether-ceiling-void-damage-height
- paper.yml">paper.yml
MC Java 版服务器具有辣鸡单线程这个历史问题。主循环的主要工作都在一个线程里完成。一核有难八核围观。
Mod 服对单核性能要求很高,建议 tps 不足的服主使用 Boost Mini 以上型号。但是不论 CPU 单核性能如何,这篇文章应该对各位 PixelCloud 服主都有所帮助。
本文许多内容参考自《Minecraft server optimization guide》。
该文档持续更新。
Vanilla(所有核心均适用)
server.properties
可视距离
即 view-distance,这个数值表示服务器发送给客户端的 chunk 数量。这个数值越小,服务器性能越高,玩家能看见的地方也就越近。
Java 版
网络数据包压缩阈值
即 network-compression-threshold,超过这个数值则网络数据包会被压缩,压缩算法消耗 CPU,所以这个数值是在以带宽来换 CPU。这个数值越大,CPU 负载越小,但带宽越大,同时对网络差的客户端越不友好。
模拟距离
即 simulation-distance,只有 1.18+ 的服务器才支持此属性。这个数值代表了多远的区块会进入服务器的主循环,也就是会被 tick,不被 tick 的动物不会移动,作物不会生长,也就不消耗 CPU。这个数值越小 TPS 越高。
基岩版
计算距离
即 tick-distance,当玩家远离某个区块的距离超过设定值后,该区块会停止加载。这个数值越小 TPS 越高。
Spongeforge
global.conf
请阅读 Sponge 官方出品的《性能调优》文章。里面详细介绍了如何通过修改 global.conf 达到优化性能目的。
Catserver-async
catserver.yml
async
只有 catserver-async 核心才有以下设置,catserver 没有。
推荐的值:
async:
chunkGenerator: true
entityMoveChunkLoad: true
entityMoveChunkLoad 代表生物移动是否异步
chunkGenerator 代表 chunk 生成是否异步
Bukkit 以及基于 Bukkit 的核心(如 Spigot、Catserver)
bukkit.yml
spawn-limits
推荐的值:
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
water-underground-creature: 3
ambient: 1
生物的生成公式是 [playercount] * [limit]
,playercount
是服务器当前的在线玩家数。所以数值越小,玩家能看到的生物也就越少。per-player-mob-spawn 对此施加了额外的限制,确保生物的生成平均分布于每个玩家之中。调低这个值是一把双刃剑,因为有的游戏模式的快乐源泉就是生成的生物。如果你适当地设置 mob-spawn-range,你可以设置得比(推荐的值中的) 20 还低。调低 mob-spawn-range会让玩家觉得只有他们周围才会生成生物。
ticks-per
推荐的值:
monster-spawns: 10
animal-spawns: 400
water-spawns: 400
water-ambient-spawns: 400
water-underground-creature-spawns: 400
ambient-spawns: 400
这个属性决定了服务器以什么样的频率生成生物。水生生物不用频繁生成,因为它们不会频繁地被杀死。对于怪物来说,就算是在怪物农场,提高这个值并不会显著影响生成速率。在绝大多数情况下这些值都应该高于 1。将这个值设置得高一些也会让你的服务器能更好地处理禁止生成生物地区域。
Spigot 以及基于 Spigot 的核心(如 Paper)
spigot.yml
mob-spawn-range
推荐值:2
这个值是玩家周围生成怪物的范围(单位为 chunk),这个值越小,玩家越感到身边有许多怪物。根据你的游戏玩法,你可能希望这个值和 spawn-limits 一起调整来达到你想要的效果。这个值应该小于等于可视距离。并且不能大于 despawn-range 除以 16。
entity-activation-range
推荐值:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 48
这些值表示多远的实体(单位是方块)会被主循环计算模拟,类似原版的模拟距离。越低性能越好,但是太低的话玩家必须非常靠近实体,这些实体才会响应、移动。把这个值设定得太低会导致大多数生物农场无法工作,铁农场是最常见得受害者。
entity-tracking-range
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
多远距离内的实体可见。如果玩家在设定的距离值之外,实体数据不会被发送到客户端。如果设置得太低,会出现怪物凭空出现的情况。想一想当你看见一个 creeper 的时候它已经在你身边了,是什么感觉。
tick-inactive-villagers
推荐值:false
这个值让你可以控制是否在激活圈内模拟计算村民。关闭这个值会提高性能,但可能会导致铁农场出问题,也可能会导致村民交易不补货。
nerf-spawner-mobs
推荐值:true
这个值可以让刷怪笼生成的怪物没有 AI,不会动。修改 paper.yml 的 spawner-nerfed-mobs-should-jump
你可以让它们在水里的时候跳跃,以防被淹死。
merge-radius
推荐值:
item: 3.5
exp: 4.0
离得太近的掉落物和经验球会自动合并。减少地面上实体的计算量,可以优化服务器性能。但是如果设置得太高,玩家可能会看到这些东西合并时候的诡异画面,也会崩坏一些自动农场。合并行为会穿墙。经验球只会在生成的时候合并。
hopper-transfer
推荐值:8
漏斗要多少个 tick 才会移动一个物品。如果你的服务器上有很多漏斗,提升这个值可以显著提升性能。但是太高会影响基于漏斗的计时器和分类装置。
hopper-check
推荐值:8
漏斗要多少个 tick 才会去检查自己头顶上的物品。如果你的服务器上有很多漏斗,提升这个值可以显著提升性能。但是太高会影响基于漏斗的计时器和基于水流的分类装置。
Paper 以及基于 Paper 的核心(如 Purpur)
paper.yml
no-tick-view-distance
推荐值:7
这个值决定了玩家能看见的最远距离。这个值可以让你调低可视距离的同时还让玩家看到更远的地方。记住,虽然在可视距离之外的 chunk 不会被主循环模拟计算,但还是会从硬盘加载。所以不要设置的太高了,一般不要超过 10
。如果可视距离小于这个值,玩家的可视距离以客户端为准。
delay-chunk-unloads-by
推荐值:10
max-auto-save-chunks-per-tick
推荐值:8
prevent-moving-into-unloaded-chunks
推荐值:true
entity-per-chunk-save-limit
推荐值:
experience_orb: 16
arrow: 16
dragon_fireball: 3
egg: 8
ender_pearl: 8
eye_of_ender: 8
fireball: 8
small_fireball: 8
firework_rocket: 8
potion: 8
llama_spit: 3
shulker_bullet: 8
snowball: 8
spectral_arrow: 16
experience_bottle: 3
trident: 16
wither_skull: 4
area_effect_cloud: 8
despawn-ranges
推荐值:
monster:
soft: 30
hard: 56
creature:
soft: 30
hard: 56
ambient:
soft: 30
hard: 56
axolotls:
soft: 30
hard: 56
underground_water_creature:
soft: 30
hard: 56
water_creature:
soft: 30
hard: 56
water_ambient:
soft: 30
hard: 56
misc:
soft: 30
hard: 56
per-player-mob-spawns
推荐值:true
max-entity-collisions
推荐值:2
update-pathfinding-on-block-update
推荐值:false
fix-climbing-bypassing-cramming-rule
推荐值:true
armor-stands-tick
推荐值:false
armor-stands-do-collision-entity-lookups
推荐值:false
tick-rates
推荐值:
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
alt-item-despawn-rate
推荐值:
enabled: true
items:
COBBLESTONE: 300
NETHERRACK: 300
SAND: 300
RED_SAND: 300
GRAVEL: 300
DIRT: 300
GRASS: 300
PUMPKIN: 300
MELON_SLICE: 300
KELP: 300
BAMBOO: 300
SUGAR_CANE: 300
TWISTING_VINES: 300
WEEPING_VINES: 300
OAK_LEAVES: 300
SPRUCE_LEAVES: 300
BIRCH_LEAVES: 300
JUNGLE_LEAVES: 300
ACACIA_LEAVES: 300
DARK_OAK_LEAVES: 300
CACTUS: 300
DIORITE: 300
GRANITE: 300
ANDESITE: 300
SCAFFOLDING: 600
use-faster-eigencraft-redstone
推荐值:true
disable-move-event
推荐值:false
mob-spawner-tick-rate
推荐值:2
optimize-explosions
推荐值:true
enable-treasure-maps
推荐值:false
treasure-maps-return-already-discovered
推荐值:true
grass-spread-tick-rate
推荐值:4
container-update-tick-rate
推荐值:1
non-player-arrow-despawn-rate
推荐值:20
creative-arrow-despawn-rate
推荐值:20
anti-xray
推荐值:true
remove-corrupt-tile-entities
推荐值:true
nether-ceiling-void-damage-height
推荐值:127