MC Java 版服务器具有辣鸡单线程这个历史问题。主循环的主要工作都在一个线程里完成。一核有难八核围观。

Mod 服对单核性能要求很高,建议 tps 不足的服主使用 Boost Mini 以上型号。但是不论 CPU 单核性能如何,这篇文章应该对各位 PixelCloud 服主都有所帮助。

新增 i9 型号

本文许多内容参考自《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 没有。
推荐的值:

  1. async:
  2. chunkGenerator: true
  3. entityMoveChunkLoad: true

entityMoveChunkLoad 代表生物移动是否异步
chunkGenerator 代表 chunk 生成是否异步

Bukkit 以及基于 Bukkit 的核心(如 Spigot、Catserver)

bukkit.yml

spawn-limits

推荐的值:

  1. monsters: 20
  2. animals: 5
  3. water-animals: 2
  4. water-ambient: 2
  5. water-underground-creature: 3
  6. ambient: 1

生物的生成公式是 [playercount] * [limit]playercount 是服务器当前的在线玩家数。所以数值越小,玩家能看到的生物也就越少。per-player-mob-spawn 对此施加了额外的限制,确保生物的生成平均分布于每个玩家之中。调低这个值是一把双刃剑,因为有的游戏模式的快乐源泉就是生成的生物。如果你适当地设置 mob-spawn-range,你可以设置得比(推荐的值中的) 20 还低。调低 mob-spawn-range会让玩家觉得只有他们周围才会生成生物。

ticks-per

推荐的值:

  1. monster-spawns: 10
  2. animal-spawns: 400
  3. water-spawns: 400
  4. water-ambient-spawns: 400
  5. water-underground-creature-spawns: 400
  6. ambient-spawns: 400

这个属性决定了服务器以什么样的频率生成生物。水生生物不用频繁生成,因为它们不会频繁地被杀死。对于怪物来说,就算是在怪物农场,提高这个值并不会显著影响生成速率。在绝大多数情况下这些值都应该高于 1。将这个值设置得高一些也会让你的服务器能更好地处理禁止生成生物地区域。

Spigot 以及基于 Spigot 的核心(如 Paper)

spigot.yml

mob-spawn-range

推荐值:2
这个值是玩家周围生成怪物的范围(单位为 chunk),这个值越小,玩家越感到身边有许多怪物。根据你的游戏玩法,你可能希望这个值和 spawn-limits 一起调整来达到你想要的效果。这个值应该小于等于可视距离。并且不能大于 despawn-range 除以 16。

entity-activation-range

推荐值:

  1. animals: 16
  2. monsters: 24
  3. raiders: 48
  4. misc: 8
  5. water: 8
  6. villagers: 16
  7. flying-monsters: 48

这些值表示多远的实体(单位是方块)会被主循环计算模拟,类似原版的模拟距离。越低性能越好,但是太低的话玩家必须非常靠近实体,这些实体才会响应、移动。把这个值设定得太低会导致大多数生物农场无法工作,铁农场是最常见得受害者。

entity-tracking-range

  1. players: 48
  2. animals: 48
  3. monsters: 48
  4. misc: 32
  5. other: 64

多远距离内的实体可见。如果玩家在设定的距离值之外,实体数据不会被发送到客户端。如果设置得太低,会出现怪物凭空出现的情况。想一想当你看见一个 creeper 的时候它已经在你身边了,是什么感觉。

tick-inactive-villagers

推荐值:false
这个值让你可以控制是否在激活圈内模拟计算村民。关闭这个值会提高性能,但可能会导致铁农场出问题,也可能会导致村民交易不补货。

nerf-spawner-mobs

推荐值:true
这个值可以让刷怪笼生成的怪物没有 AI,不会动。修改 paper.ymlspawner-nerfed-mobs-should-jump 你可以让它们在水里的时候跳跃,以防被淹死。

merge-radius

推荐值:

  1. item: 3.5
  2. 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

推荐值:

  1. experience_orb: 16
  2. arrow: 16
  3. dragon_fireball: 3
  4. egg: 8
  5. ender_pearl: 8
  6. eye_of_ender: 8
  7. fireball: 8
  8. small_fireball: 8
  9. firework_rocket: 8
  10. potion: 8
  11. llama_spit: 3
  12. shulker_bullet: 8
  13. snowball: 8
  14. spectral_arrow: 16
  15. experience_bottle: 3
  16. trident: 16
  17. wither_skull: 4
  18. area_effect_cloud: 8

despawn-ranges

推荐值:

  1. monster:
  2. soft: 30
  3. hard: 56
  4. creature:
  5. soft: 30
  6. hard: 56
  7. ambient:
  8. soft: 30
  9. hard: 56
  10. axolotls:
  11. soft: 30
  12. hard: 56
  13. underground_water_creature:
  14. soft: 30
  15. hard: 56
  16. water_creature:
  17. soft: 30
  18. hard: 56
  19. water_ambient:
  20. soft: 30
  21. hard: 56
  22. misc:
  23. soft: 30
  24. 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

推荐值:

  1. sensor:
  2. villager:
  3. secondarypoisensor: 80
  4. nearestbedsensor: 80
  5. villagerbabiessensor: 40
  6. playersensor: 40
  7. nearestlivingentitysensor: 40
  8. behavior:
  9. villager:
  10. validatenearbypoi: 60
  11. acquirepoi: 120

alt-item-despawn-rate

推荐值:

  1. enabled: true
  2. items:
  3. COBBLESTONE: 300
  4. NETHERRACK: 300
  5. SAND: 300
  6. RED_SAND: 300
  7. GRAVEL: 300
  8. DIRT: 300
  9. GRASS: 300
  10. PUMPKIN: 300
  11. MELON_SLICE: 300
  12. KELP: 300
  13. BAMBOO: 300
  14. SUGAR_CANE: 300
  15. TWISTING_VINES: 300
  16. WEEPING_VINES: 300
  17. OAK_LEAVES: 300
  18. SPRUCE_LEAVES: 300
  19. BIRCH_LEAVES: 300
  20. JUNGLE_LEAVES: 300
  21. ACACIA_LEAVES: 300
  22. DARK_OAK_LEAVES: 300
  23. CACTUS: 300
  24. DIORITE: 300
  25. GRANITE: 300
  26. ANDESITE: 300
  27. 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