|
- 站内有很多优化帖,但是大多数都是总体地谈论,而很少有人单独针对某个版本给出优化的教程。排除硬件和操作系统部分,我会虚心地把我所知道的1.16服务器优化方法分享给大家。
- 我为什么要写这篇教程:
- ①站内有些教程存在误导性,以及有些教程写得过于繁琐②站内专门对1.16服务器优化的帖子很少③希望1.16的服务器市场能够更加健康,让Minecraft 1.16的所有玩家都能因此获得更加流畅的游戏体验.
- 本篇教程共分为:
- ①服务端的选择②JVM参数优化③配置文件优化④安装优化插件⑤跨服同步&使用Mysql存储数据 五个部分;
- 本人不接受任何人在我的帖子下方回复类似于“帮我看看Timings”的请求,需要分析Timings请移步问答版;
本帖已停止维护,请移步新帖 - https://www.mcbbs.net/thread-1220729-1-1.html
|
- (√)我推荐使用以下三个服务端
- Paper下载地址
- Tuinity下载地址
- Purpur下载地址
(!)在Tuinity和Purpur服务端中的TNT复制将会拥有独特的轨迹和延时哦~(讽刺的口气)
- (!)我不推荐使用以下服务端
- Bukkit & Spigot & 官方核心
- Yatopia下载地址
|
- JVM参数的选用需要根据你服务器拥有的内存决定
- 如果你的内存很少(可用内存小于6GB),那么我建议你安于现状,去站内寻找其他JVM启动参数,选择一个适合低内存服务器的启动参数。因为本帖的目的是优化,所以无论何时,我都推荐你购买一个高内存的服务器,并使用下面的启动参数.
- 如果你的可用内存大于6GB,那么恭喜你,我推荐你使用Aikar推荐的启动参数(1.15+)原帖链接
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paperclip.jar nogui
- 如果你的可用内存大于12GB,那么可以再进一步优化
-XX:G1NewSizePercent=40
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20
-XX:G1MaxNewSizePercent=50
-XX:G1HeapRegionSize=16M
-XX:G1ReservePercent=15
-XX:InitiatingHeapOccupancyPercent=20
(√)Aikar的启动参数是在多年实践中总结而来,会带来更加稳定的TPS,因此各位不必担心使用这个启动参数会造成什么不良影响。如果你想详细了解这个启动参数,站内有相关搬运帖和分析帖,所以在此我不多浪费各位的时间,以最简洁的语言结束Part2部分.
|
Server.properties
- network-compression-threshold
- 默认值:256
- 推荐值:512/-1/0
- 注释:网络封包压缩的阀值,当你的服务器带宽充裕时,可以适当提高此值以减少cpu的负担;如果你的服务器是BungeeCord下的某个子服,请设置为-1避免不必要的性能损失.如果你的带宽不充裕,为了保证在线玩家的体验,请设置为128或更小值(0指全部压缩)
- view-distance (暂时先不修改,我会在paper.yml讲解中详细分析)
- 默认值:10
- 推荐值:3-8
- 注释:服务器加载区块需要消耗CPU、内存、带宽资源,降低服务器视距将有效提高服务器TPS.
Bukkit.yml
spawn-limits默认值:
- monsters: 70
- animals: 10
- water-animals: 15
- water-ambient: 20
- ambient: 15
- monsters: 30-40
- animals: 8
- water-animals: 8-10
- water-ambient: 1-2
- ambient: 1-2
ticks-per
默认值
- animal-spawns: 400
- monster-spawns: 1
- water-spawns: 1
- water-ambient-spawns: 1
- ambient-spawns: 1
- autosave: 6000
- animal-spawns: 400
- monster-spawns: 1-4
- water-spawns: 2-4
- water-ambient-spawns: 5
- ambient-spawns: 2-4
- autosave: 0
②bukkit自动保存常常会造成服务器瞬时的卡顿,所以我推荐使用Paper核心的自动保存,设置为0以禁用bukkit自动保存.
chunk-gc.period-in-ticks
- 默认值:600
- 推荐值:400
- 注释:这决定了每隔多少时间对未被正常回收区块进行回收,减少该值将减少加载不必要的区块。请不要设置为过低值,否则会频繁触发检测造成CPU资源的浪费.
Spigot.yml
- log-villager-deaths
- 默认值:true
- 推荐值:false
- 注释:记录村民的死亡,可以关闭防止后台刷屏.
- arrow-despawn-rate
- 默认值:1200
- 推荐值:300
- 注释:箭矢命中后消失的时间.
- view-distance
- 注释:同server.properties设置.
- wither-spawn-sound-radius
- 默认值:0
- 推荐值:64
- 注释:凋零生成音效的作用范围,因为我自己服里有玩家制造杀凋机,所以每次机器运转都会有持续数秒的凋零生成音效。如果你不希望其他玩家被干扰,请使用该推荐值.
- mob-spawn-range
- 默认值:8
- 推荐值:通常设置比view-distance小1
- 注释:以区块(x16)为半径,原版默认是128范围刷怪
- tick-inactive-villagers
- 默认值:true
- 推荐值:false
- 注释:设置为false会导致村民补货需要玩家在其旁边挂机才能进行。如果你的服务器内有大量村民,建议设置该项为false。否则服务器会因为村民数量增加而越来越卡.
entity-activation-range:默认值:
- animals: 32
- monsters: 32
- raiders: 48
- misc: 16
- water: 16
- villagers: 32
- flying-monsters: 32
- animals: 8-12
- monsters: 28-32
- raiders: 10
- misc: 2
- water: 4-8
- villagers: 6
- flying-monsters: 32
- merge-radius:
- exp: 3.0
- item: 2.5
- 推荐值:适当增大
- 注释:这决定了经验球、物品合并的范围,如果设置过大一定会出现一些不必要的问题。例如物品在合并时经过了岩浆,请斟酌适当修改.
- max-entity-collisions
- 默认值:8
- 推荐值:1-2
- 注释:限制单个实体每tick最多与多少个实体发生碰撞,减小此值可以缓解高密度牧场和聚怪型刷怪塔造成的CPU负担.
- trident-despawn-rate
- 默认值:1200
- 推荐值:200
- 注释:溺尸投掷的三叉戟命中后消失时间,单位为tick.
- max-tick-time
- 默认值: tile:50, entity:50
- 推荐值: tile:1000, entity:1000
- 注释:如果你想详细了解为什么这么设置请看这里.
Paper.yml
- per-player-mob-spawns
- 默认值:false
- 推荐值:true
- 注释:决定bukkit.yml中生物数量限制是否适用于每个玩家。如果你按照我上文所说的修改了bukkit.yml,请设置此项为true防止玩家找不到怪物。
- keep-spawn-loaded: true
- 默认值:true
- 推荐值:false
- 注释:是否保持出生点常加载,关闭该项可以节约服务器内存,且下方的keep-spawn-loaded-range会被忽略.
- keep-spawn-loaded-range
- 默认值:4
- 推荐值:与视距保持一致
- 注释:如果你的出生点是玩家频繁进出的地方,可以开启出生点常加载以减少反复重新加载所需的CPU资源.
- optimize-explosions
- 默认值:false
- 推荐值:true
- 注释:百利无一害的优化,不会影响游戏体验.
- delay-chunk-unloads-by
- 默认值:10s
- 推荐值:20s
- 注释:延迟区块卸载,如果你是生存服务器,例如玩家经常在自己家和主城、商店之间传送,可以适当增加此值以减少区块重新被加载所需要的CPU资源.
- max-entity-collisions
- 默认值:8
- 推荐值:1-2
- 注释:服务器将停止处理超过该数值的实体碰撞.
- container-update-tick-rate
- 默认值:1
- 推荐值:3
- 注释:这决定了每隔多少tick服务器更新一次容器和背包,设置为3不会对游戏体验造成肉眼可见的影响.(如果你希望服务器的漏斗机制正常,请不要修改该值)
- prevent-moving-into-unloaded-chunks
- 默认值:false
- 推荐值:true
- 注释:是否阻止玩家进入未被加载的区块中。我推荐开启,当你的玩家进入未被加载的区块后CPU资源消耗将更多.
- use-faster-eigencraft-redstone
- 默认值:false
- 推荐值:true
- 注释:采用优化的红石运算机制,可能会彻底改变红石对服务器造成的影响。目前就我个人使用该优化而言,效果还是比较明显的,对正常红石机械的影响并不大.
- max-auto-save-chunks-per-tick
- 默认值:24
- 推荐值:8(20人以下的服务器)12(20-35人的服务器)
- 注释:减小此值可以节约CPU开支,如果区块未能在一定时间内自动保存完毕,剩下所有未保存的区块将在一瞬间进行保存,并重新开始这个过程。较高在线人数的服务器需要适当提高该值.
- auto-save-interval
- 默认值:-1(禁用)
- 推荐值:6000
- 注释:Paper的自动保存比Bukkit的更加稳定.
- creative-arrow-despawn-rate
- 默认值:-1
- 推荐值:20
- 注释:创造模式下射出的箭在击中目标20ticks(1s)后消失.
- non-player-arrow-despawn-rate
- 默认值:-1
- 推荐值:20
- 注释:同上(主体为非玩家,比如骷髅)
- disable-chest-cat-detection
- 默认值:false
- 推荐值:true/false
- 注释:开箱子时检测上方是否有猫.(对性能完全没有帮助的选项,不改也无所谓)
anti-xray默认值:enabled: false engine-mode: 1 max-chunk-section-index: 3 update-radius: 2推荐值:enabled: true engine-mode: 2 max-chunk-section-index: 7 update-radius: 2Engine-mode: 1代表藏矿模式(可以防御xray材质包)Engine-mode: 2代表假矿模式,可以防御一切的作弊挖矿(除非种子被破译)
- 并在hidden-blocks: 增加
- - ancient_debris
- - nether_gold_ore
- - nether_quartz_ore
- - end_portal_frame
- - netherrack
despawn-ranges
默认值:
- soft: 32
- hard: 128
- soft: 32
- hard: 96/128
no-tick-view-distance
- 默认值:-1(禁用)
- 推荐值:5-7(一定要大于view-distance)
- 注释:很多人都不知道paper新增的这个功能,举个例子,你设置了玩家的view-distance=3,而设置了no-tick-view-distance=7,那么只有视距为3的世界会被计入tick(比如怪物移动),但是你能看到视距为7的世界(这拓展的视距里怪物不会移动)。这样就实现了以较少的CPU消耗得到较大的视野。我不推荐你设置view-distance的值小于3,这会导致部分玩家刷怪塔、机器无法正常使用。(view-distance修改请在spigot.yml中进行)
- view-distance=4
- no-tick-view-distance=8
- view-distance=3
- no-tick-view-distance=5
alt-item-despawn-rate
- 推荐值:
items:
COBBLESTONE: 300
NETHERRACK: 300
TOTEM_OF_UNDYING: 300
IRON_AXE: 200
GOLDEN_SWORD: 200
ROTTEN_FLESH: 300
ENDER_PEARL: 200 STRING: 200 WHEAT_SEEDS: 200 BONE: 200 SPIDER_EYE: 200 GUNPOWDER: 200
其他怪物掉落物/垃圾:一个较小的数值
- 注释:这是我自己服务器使用的配置(没有安装清理掉落物的插件)Paper提供了自定义物品的消失时间,有时候这个比扫地大妈来得更加轻量且不会让玩家产生焦虑感.
- 你也可以在Spigot.yml中修改item-despawn-rate: 6000为更小值,但是这样会明显破坏原版机制.
Tuinity.yml
world-settings:
world_the_end:
spawn-limits:
monsters: 20
animals: 0
water-ambient: 0
water-animals: 0
ambient: 0
注释:你可以单独设置各个世界的刷怪上限,上面只是我给出的对优化小黑塔有效的配置.
Purpur.yml
use-alternate-keepalive
默认值:false
推荐值:true
注释:设置为true将有效防止网络较差的玩家掉线.
dont-send-useless-entity-packets
默认值:false
推荐值:true
注释:防止服务器发送过多无意义的实体数据包.
|
WorldBorder & chunky
使用worldborder对地图进行预加载,可以有效缓解跑图造成的CPU压力.在这里我不过多阐述,站内搬运帖
同样也可以使用Chunky
预加载地图是一件开服之前非常值得做的事,如果你的服务器核心数量不足,无法应对跑图生成新地图的压力,请预加载你的地图!
LimitPillagers
因为掠夺者而卡服?不妨试试这个插件,站内搬运帖
Villager Optimiser
可以略微减少过多村民造成的服务器卡顿,但是根本治理村民的方法是限制数量,站内搬运帖
Tuinity与Purpur已整合类似功能,不必重复安装.
MobFarmManager & JulySafe
限制数量才是治本之策,可以选取上方两款插件之一来限制区块内生物数量(例如村民、掠夺者)
如果你希望玩家能正常刷无限袭击,请卸载LimitPillagers并使用这两个插件.
在这里我给出我的MFM配置文件供大家参考(我更推荐MFM,更低的价格与更全面的区块生物管理)
MobfarmManagerSpigot原帖
JulySafe站内帖
优化的误区——你需要避免安装这些“优化插件”
本来就没有跟踪那么多实体,为什么还需要取消跟踪呢?
多余的检测只会增加服务器的Lag.(包括这些同类插件)
- 扫地大妈类的插件
这些漏洞已经被Paper修复了,没必要增加这些多余的检测.
|
终于走到这一步了吗?无论你优化做得有多么好,单端的承载能力是有极限的。可能你绞尽脑汁参考了各个优化帖,拼命对单端进行优化,最终又能多带几个人呢?单端无法承载的压力就需要多端分布承载。使用Mysql存储数据、开设资源服(而不是资源世界)镜像服。只要你的CPU核心足够,多开一个子服理论能多带100%的玩家。如果你是单端服主,想要突破人数上限,不可避免的就是走上跨服BC的道路(或者缺心眼压榨玩家的游戏体验获取单端极限优化)。我在此只是给各位一个思路,本指南仅针对单端优化,具体实现方式,站内的教程帖子有不少,我就不再啰嗦了。
本指南终,感谢您看到最后
如果本指南对你有帮助,请留下您的评分,这是对本指南的肯定
2021/1/20
不管辣么多 先贊一个!!!
赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞赞
好耶,终于更新啦!
请问 JVM参数对 低版本有用吗?1.12.2cat端
补充一点:
关于network-compression-threshold选项的优化,对于上行带宽紧张的服主我非常不建议使用贴子中的参数。我更推荐你将此参数更改为0,即全部压缩,可以大幅度降低Minecraft服务器对服务器上行的占用。而这个选项中(0,64)这个区间参数是无效的,在这个区间内视作64进行压缩。
而把这个数值调大对于一定规模的服务器性能影响来说微不足道。但对于上行占用有一个很明显的降低。使30+的网络稳定连接成为可能。
关于network-compression-threshold选项的优化,对于上行带宽紧张的服主我非常不建议使用贴子中的参数。我更推荐你将此参数更改为0,即全部压缩,可以大幅度降低Minecraft服务器对服务器上行的占用。而这个选项中(0,64)这个区间参数是无效的,在这个区间内视作64进行压缩。
而把这个数值调大对于一定规模的服务器性能影响来说微不足道。但对于上行占用有一个很明显的降低。使30+的网络稳定连接成为可能。