【MC开服】服务端超详细优化教程

作者:佚名    发布时间:2024-06-10 06:10:19    浏览:

[返回]

修订日期:2020年03月21日 第一版v1.0

? ? ? ? ? ? ? ? 2022年07月16日 第二版v2.0

2022年07月19日 第二版v2.1

关键词:我的世界,服务器,优化,tps,修复卡顿

MC服务端优化教程 v2.1

本教程针对paper服务端编写,亦适用于spigot, pufferfish, purpur, mohist等服务端

Spigot 和 Paper 提供的设置可以大大提高性能。本指南讲解了在不影响游戏性的情况下充分利用服务端的设置,以减少卡顿/提升人数上限/提升TPS。


万字优化教程,适合有一定开服经验的腐竹阅读,小白可以先看往期的基础开服视频。

建议点赞收藏后阅读,长期更新。


导语

您选择的服务器软件可能在性能和 API 可能性方面产生巨大差异。当前有多种可行的流行服务器 JAR,但也有一些由于各种原因您应该远离。

您应该优先选择较高版本服务器,而不是1.7.10, 1.8.8, 1.12.2这些扁平化之前版本,因为大部分服务端团队只会更新最新的几个版本。

?

首选推荐

-Paper - 最流行的服务器软件,旨在提高性能,同时修复游戏玩法和机制的不一致。

-Pufferfish - 旨在进一步提高服务器性能的Paper分叉。

-Purpur - Pufferfish 分叉专注于功能和定制自由。

?

可以尝试:

-Mohist/CatServer – 基于Paper/Spigot加上Forge,可以兼容模组和插件,但是目前缺乏高版本兼容性以及存在一定数量bug。

?

应当远离:

-任何声称异步的任何付费服务器 JAR - 99.99% 的可能性是骗局。

-Bukkit/CraftBukkit/Spigot - 与其他服务端相比,在性能方面非常过时。

?

Spigot Paper 提供的设置可以大大提高性能。本指南讲解了在不影响游戏性的情况下充分利用服务器的设置,以减少卡顿/提升人数上限/提升TPS

目录

【性能测量】... 4

【BUKKIT.YML】... 6

【SPIGOT.YML】... 8

【PAPER.YML】... 11

【PUFFERFISH.YML】... 17

【PURPUR.YML】... 18

【SERVER.PROPERTIES】... 19

【PER-WORLD-SETTINGS】... 20

【JAVA启动标志(BAT文件)】... 21

【地图预生成】... 29

【优化插件推荐】... 29

【参考链接】... 30

作者QQ:1945555591 交流群:720270549

TPS - 服务器滞后
TPS 代表TicksPerSecond。它也是服务器所有者可以直接控制唯一项目,下述指南专门用于提高 TPS。?服务器以 20 TPS 的速率处理所有任务。诸如怪物移动、作物生长和玩家与块的交互等任务需要由服务器Ticks才能正常运行。TPS 低于 20 意味着服务器运行滞后,必须跳过任务才能按时执行重要任务。显着的 TPS 损失通常会带来一些轻微的烦恼,例如间歇性的怪物卡顿和块中断重置(挖掘不了方块)。严重的情况可能会导致服务器范围内的冻结甚至崩溃。

TPS 参考评级

20.0=完美无瑕 - 干得好。
19.95-19.99?=很好 - 不明显的 TPS 损失。大多数服务器都在这范围。
18.5-19.94?=一般 - 可能有一些卡顿,但不会破坏游戏。
16.0-18.4?=差 - 如果这是你的平均水平,你肯定需要解决这个问题。
<16.0?=无法玩...


Ping - 连接延迟
Ping(又称延迟)反映了数据在客户端和服务器主机之间处理和传输所需的时间(以毫秒为单位)。客户端与服务器的地理距离越远,此传输可能需要的时间就越长。对 ping 的其他常见影响是拥塞或连接缓慢。

作为服务器腐竹,您应该将服务器托管在您更喜欢拥有玩家基础的区域或能够接纳广泛玩家的区域。

示例:如果你的玩家集中在广东省,你应该组一个在广东中部例如广州服务器,深圳客户端到广州云服务器参考ping值为7ms;如果你的玩家分布在全国,可以考虑上海/南京/北京等中原城市的服务器。

Ping 评分
1-90?=太棒了!
91-179?=好 - 在 PvP 中可能有轻微的劣势。
180-299?=差 - 与方块/玩家/实体互动时经常出现延迟。
300-499?=差 - 几乎无法播放。
500+?=假设您的带宽稳定,是时候找到离您更近的服务器了。


FPS - 客户端延迟
不要将 TPS 与FPS混淆(帧数秒)。FPS 反映了客户端处理和显示游戏/服务器想要渲染的内容的能力。FPS 是 100% 由客户端影响,与服务器性能无关。

服务器可以帮助 FPS 做的唯一一件事就是削减服务器功能,以便上古 PC 可以跟上,但即使这样也不太可能对帧数产生很大的差别。建议不要减少服务器功能,而是向玩家推荐一个名为推荐值ifine的流行客户端模块,当然升级电脑才是治本方法。

FPS 评级
注意:这些FPS假设您在非图形密集位置的平均水平。
60+?=完美 - 任何超过 60 FPS 对 Minecraft 来说都是多余的。考虑将 FPS 限制在 80 以下,以避免对硬件造成不必要的压力。
40-59=很好 - 应该没有问题。
25-39?=好 - 偶尔呈现延迟。输入图形密集区域时会出现问题。
15-24?=差 - 不断出现渲染故障。可能在图形密集区域冻结,关闭光影。
1-10?=错误 - 客户端应显着减少图形设置,关闭光影。

MSPT

Paper 提供了一个/mspt命令,该命令将告诉您服务器计算最近的回应所花费的时间。如果您看到的第一个和第二个值低于 50,那么恭喜!您的服务器没有滞后!如果第三个值超过 50,则意味着至少有 1 个刻度需要更长的时间。这是完全正常的,并且不时发生,所以不要惊慌。

?

Timings

查看服务器滞后时可能发生的情况的好方法是时间。Timings 是一种工具,可让您准确了解哪些任务花费的时间最长。这是最基本的故障排除工具,如果您寻求有关延迟的帮助,您很可能会被要求提供时间。

?

要获取服务器的时间,您只需执行/timings paste命令并单击您提供的链接。您可以将此链接分享给其他人,让他们帮助您。如果您不知道自己在做什么,也很容易误读。

?

Spark-火花

Spark是一个插件,可让您分析服务器 CPU 和内存使用情况。您可以在其 wiki 上阅读如何使用它。这里还有一个关于如何找到延迟峰值原因的指南。

spawn-limits
默认值:?monsters:70, animals:10, water-animals:15, water-ambient:20, ambient:15
推荐值:monsters:50, animals:8, water-animals:7, water-ambient:10, ambient:1
性能影响:重

? 虽然这比“每个玩家的怪物数”更多,但较低的值意味着更少的怪物。避免太低,否则怪物短缺会很明显。指南中的后续值将使减少不那么明显。

chunk-gc.period-in-ticks
默认值:?600
推荐值:?400
性能影响:?中等

? 这可以更快地卸载空块。更少的tick意味着更少的 TPS 消耗。

ticks-per.(type)-spawns
默认值:?Monster:1,water:1,water-ambient:1,ambient:1
推荐值:monster:5,water:11,water-ambient:21,ambient:31
性能影响:中等

?限制小怪的公式是[playercount] * [limit],其中“玩家数”是服务器上的当前玩家数量。从逻辑上讲,数字越小,你看到的小怪就越少。per-player-mob-spawn对此施加了额外的限制,确保怪物在玩家之间平均分配。减少这是一把双刃剑;是的,您的服务器要做的工作更少,但在某些游戏模式中,自然生成的生物是游戏玩法的重要组成部分。mob-spawn-range如果调整得当,您可以低至 20 或更少。设置mob-spawn-range得较低会让人感觉每个玩家周围都有更多的小怪。如果您使用的是 Paper,您可以在paper-world 配置中设置每个世界的生物限制。

autosave
默认值:6000 (通常)
推荐值:6000
性能影响:?N/A

? 这启用了 Bukkit 的世界保存和运行频率(以tick计)。默认情况下它应该是 6000,只是仔细检查它不是 0(禁用)。

注意:如果您使用服务器或插件进行保存,请停止!他们只是运行非常过时的 /save-all 命令。
Worldsave Lag?:?Worldsave的滞后峰值?您可能会考虑 Paper 的无延迟保存。

save-user-cache-on-stop-only
默认值:?false
推荐值:?true
性能影响:中等

? 服务器应该持续保存用户数据(false)还是只在服务器停止/重新启动时候保存(true)?这在 Spigot 上节省了很好的 TPS(在 Paper 上更少,因为它更有效)。

注意:进行定期备份以避免在罕见的致命崩溃事件中丢失数据。

max-tick-time
默认值:?tile:50, entity:50
推荐值:?tile:1000, entity:1000
性能影响:?N/A

? 1000禁用此功能。小小的 TPS 节省不值得换取潜在的损害。

mob-spawn-range
默认值:?8
推荐值:?6
性能影响:N/A

? 允许你缩小玩家周围怪物生成的范围(以块为单位)。根据您服务器的游戏模式及其玩家数量,您可能希望与bukkit.yml一起减少此值spawn-limits。将此值设置得较低会让人感觉周围有更多的小怪。这应该小于或等于您的视野距离,并且永远不会大于您的硬消失范围 / 16。

警告:如果您的视距为 6 或更小,请将生成范围设置为低于该值 1(例如,如果视距为 5,则将 mob-spawn-range 设置为 4)

entity-activation-range
默认值:?animals:32, monsters:32, raiders: 48, misc:16
推荐值:animals:16, monsters:24, raiders: 48, misc:8
性能影响:中等

? 超过此范围的实体将不常被勾选。避免将此设置得太低,否则您可能会破坏暴民行为(怪物仇恨、袭击等)。

注意:村民应该独自一人(如果可能的话)以保护机械师。

tick-inactive-villagers
默认值:?true
推荐值:?false
性能影响:?中等

? 启用此选项可防止服务器在激活范围之外对村民进行标记。

注意:香草行为会在加载的区块中勾选所有村民。让村民为恐慌而活跃,以防止一些铁农场被破坏。

merge-radius
默认值:?item:2.5, exp:3.0
推荐值:?item:4.0, exp:6.0
性能影响:?中等

? 合并项目意味着更少的地面项目。较高的值允许更多的项目被扫成一堆。

注意:合并会导致错觉项目消失,因为他们合并在一起。强迫症的一个小烦恼。

nerf-spawner-mobs
默认值:?false
推荐值:?true
性能影响:?中等

? 启用后,来自刷怪笼的怪物将没有 AI(不会游泳/攻击/移动)。这对于大规模的暴民农场来说是一笔巨大的 TPS 节省,但也会影响行为。农场限制器插件可能是更好的解决方案。(参阅章节“推荐插件”)

注意:Paper 有一个选项可以强制被削弱的生物跳跃/游泳。这修复了水推农场。

item-despawn-rate
默认值:?6000 (5 分钟)
推荐:?更少
性能影响:视乎情况

? 移除地面项目之前的时间(以刻度为单位)。虽然如果减少 TPS 节省可能会非常显着,但它也会影响服务器上的游戏玩法,因为返回丢弃的物品至关重要。

注意:请参阅 Paper 的 alt-item-despawn-rate,这样您就可以在不清除贵重物品的情况下瞄准垃圾物品(圆石)。

arrow-despawn-rate
默认值:?1200
推荐值:?300
性能影响:?轻微

? 类似于 item-despawn-rate,但针对箭头。一些服务器可能希望在地面上保留更长时间的箭头,但如果更快地移除,大多数服务器都不会抱怨。

注意:Paper 具有减少箭头移除对游戏玩法影响的设置。如果您使用 Paper 的箭头选项,请将其保留为接近默认值。

max-auto-save-chunks-per-tick
默认值:?24
推荐值:?6
性能影响:重

? 这会减慢世界保存任务期间的增量块保存速度。这对于现代服务器来说非常重要(拯救世界很糟糕)。

注意:将此设置得太低可能会导致未保存的块,因此请避免降低。

optimize-explosions
默认值:?false
推荐值:?true
性能影响:轻微

? Paper 有一种非常有效的爆炸算法,不会影响游戏玩法。

mob-spawner-tick-rate
默认值:?1
推荐值:?2
性能影响:?轻微

? 这是一个活跃的刷怪箱尝试生成之前的延迟(以刻度为单位)。加倍延迟不会影响生成率。当您因tick率而导致大量tick损失时才会影响。

disable-chest-cat-detection
默认值:?false
推荐值:?true
性能影响:?轻微

? 当玩家打开箱子时,箱子会扫描上面的猫。虽然启用此功能可以消除普通行为(猫会挡住箱子),但您真的需要这种机制吗?

container-update-tick-rate
默认值:?1
推荐值:3
性能影响:轻微

? 这会改变库存在打开时刷新的频率(以刻度为单位)。不要超过 4 以避免视觉问题。

max-entity-collisions(在某些构建中在 Spigot.yml 中)
默认值:?8
推荐值:?2
影性能响:中等

? 拥挤的实体(研磨机、农场等)将在此过程中碰撞更少并消耗更少的 TPS。

Grass -spread-tick-rate
默认值:?1
推荐值:?4
性能影响:?中等

? 服务器尝试将草块生长之时间提高(以tick为单位)。这不会对大多数游戏类型产生游戏影响。

despawn-ranges
默认值:soft: 32, hard: 128
推荐值:soft: 28, hard: 96
性能影响:轻微

软=与玩家之间的距离(以块为单位),定期移除小怪。
Hard=怪物被立即移除的距离。

? 较低的范围清除背景小怪,并允许在有玩家流量的区域产生更多。这进一步降低了减少生成 (bukkit.yml) 对游戏玩法的影响。

hopper.disable-move-event
默认值:?false
推荐值:?true
性能影响:?重

? 这将通过防止容器中的每个插槽调用 InventoryMoveItemEvent 来显着减少漏斗延迟。

警告:侦听 InventoryMoveItemEvent 的插件将中断。

非玩家箭头消失率
默认值:?-1(使用 Spigot 箭头消失率)
推荐值:?60(3 秒)
影响:轻微

? 类似于 Spigot 的箭头消失率,但目标是骷髅发射的箭头。由于玩家无法取回暴徒箭,这只是表面上的改变。

creative-arrow-despawn-rate
默认值:?-1 (Spigot arrow-despawn-rate)?

推荐值:?60 (3 seconds)
性能影响:轻微

prevent-moving-into-unloaded-chunks
默认值:?false
推荐值:?true
性能影响:?中等

? 防止玩家进入未加载的块(由于滞后),这会导致更多滞后。真正的设置会将它们设置回安全位置。

注意:如果你没有预先生成你的世界(你怎么了?!)这个设置很关键。

use-faster-eigencraft-redstone
默认值:?false
推荐值:?true
性能影响:?重

破坏原版设备 的情况下将冗余红石更新减少多达 95%。实证测试显示加速高达 10 倍!?注意:如果您使用插件来更改红石算法,请考虑用此选项替换它们,因为插件往往会破坏红石行为。

?

Armor-stands-tick?

默认值:?true?

推荐值:?false

影响:轻微

? 有些项目被视为实体(需要勾选),因为它们与世界互动。未勾选的盔甲架不会被水推(你在乎吗?)

注意:paper也会抵消项目框架的tick,而不是一次勾选所有框架。这是不可配置的,只需享受 TPS 节省而不会影响游戏玩法。

per-player-mob- spawns
默认值:?false
推荐值:?true
性能影响:?轻微

? 这实现了单人生成行为而不是 Bukkit 的随机算法。这可以防止其他人(即大规模农场)的行为影响服务器的生成率。

注意:如果您降低了 Bukkit 中的生成限制并注意到动物和怪物短缺,请考虑将它们重新增加,直到找到一个玩家快乐的数值。

alt-item-despawn-rate
默认值:?false
推荐值:?true
性能影响:?中

? 移除某些物品掉落比 Spigot 中设置的 item-despawn-rate 更快(或更慢)。这可以让您避免在大量垃圾烦恼。

圆石和地狱岩在 15 秒内消失的例子:

注意:添加项目时使用插口材料列表。

no-tick-view-distance
默认值:?-1
推荐值:?# > view-distance setting
性能影响:N/A

? 这是加载区块的距离,但仍然不会在你的 view-distance 之外冲突。

注意:如果您必须将您的视距设置得非常低(例如 3 或 4),您可以将其设置为 5 或 6 以改善您的游戏体验。

anti-xray.enabled
默认值:?false
推荐值:?true
性能影响:?N/A

? 虽然此设置实际上会消耗 TPS,但 Paper 的 anti-xray 是目前最有效的!引擎 1 可能不那么重(主要针对客户端),但模式 2 更有效


dab.enabled

推荐值: true

?

DAB会减少实体离玩家越远的标记量。DAB 在渐变上工作,而不是像 EAR 这样的硬截止。DAB 将根据受dab.activation-dist-mod影响的计算结果减少实体的勾选量,而不是完全勾选关闭实体和几乎不勾选远处实体。

?

dab.max-tick-freq

推荐值: 20

?

定义距离玩家最远的实体将被勾选的最慢数量。增加此值可能会提高远离视野的实体的性能,但可能会破坏农场或大大削弱暴民的行为。如果启用 DAB 会破坏暴民农场,请尝试减小此值。

?

dab.activation-dist-mod

推荐值: 7

?

控制生物被勾选的渐变。降低此值将激活更靠近玩家的 DAB,提高 DAB 的性能增益,但会影响实体与周围环境的交互方式,并可能破坏暴民农场。如果启用 DAB 会破坏暴民农场,请尝试增加此值。

zombie.aggressive-towards-villager-when-laggering

推荐值: false

?

如果服务器低于purpur.ymllagging-threshold中设置的tps 阈值,启用此功能将导致僵尸停止瞄准村民。

?

entities-can-use-portals

推荐值: false

?

此选项可以禁用除玩家之外的所有实体的门户使用。这可以防止实体通过更改在主线程上处理的世界来加载块。这具有实体无法通过门户的副作用。

?

villager.brain-ticks

推荐值: 2

?

此选项允许您设置村民大脑(工作和 poi)的频率(以滴答为单位)。高于3已确认会使村民不一致/错误。

?

villager.lobotomize.enabled

推荐值: true

?

仅当村民造成延迟时才应启用此功能!否则,寻路检查可能会降低性能。

?

被切除脑叶的村民被剥夺了他们的人工智能,只是每隔一段时间才补充他们的寻路路线。启用此功能将切断寻路系统,可能产生无法找到目的地的村民。禁用它们应该使它们解开。

simulation-distance

推荐值:?4-8
性能影响:?中

? 模拟距离是服务器将在玩家周围互动的距离。本质上是与玩家发生事情的距离。这包括熔炉冶炼、农作物和树苗生长等。这是一个你想故意设置低的选项,在3或附近的某个地方4,因为存在view-distance。这允许在不勾选它们的情况下加载更多块。这有效地让玩家可以看得更远,而不会产生相同的性能影响。

?

view-distance
默认值:?10
推荐值:?4-8
性能影响:?重

? 这是所有文件中影响最大的设置,因为它限制了块渲染距离。开放世界服务器(如生存)应该努力使用 6+,但如果块生成导致延迟,共享主机、低规格或大量玩家数量的其他服务器可能会考虑 4-5。

警告:如果您将查看距离设置为低于 7,请参阅 mob-spawn-range (spigot.yml) 中的注释。

network-compression-threshold
默认值:256
推荐值:独立机 (512) ; BungeeCord(-1)
性能影响:轻微

? 此选项在服务器尝试压缩之前限制数据包的大小。将其设置得更高可以以带宽为代价节省一些资源,将其设置为 -1 会禁用它。

注意:如果您的服务器位于 localhost 或同一数据中心 (<2 ms ping) 上的代理网络中,禁用此 (-1) 将是有益的。

Spigot/Paper的一个功能,有超过80%的服主并不知道。你可以选择一些设定只生效在指定世界。

默认(default)是优先级较低的全局设置。例如,我想在地狱世界(world_nether),取消出生点强加载(keep-spawn-loaded),就可以设置为false,以节省一个世界对服务器造成的资源。

基础bat文件示例

要运行服务器,只需像任何其他 Java 应用程序一样启动它。

?

打开终端,导航到保存的位置,然后运行

确保替换paper.jar为您下载的 jar 的名称。

?

可以通过更改-Xms和-Xmx参数中的数字来设置 RAM 的数量。--nogui 禁用 Vanilla 的 GUI,因此在使用命令行时不会出现双重界面。

?

高阶bat文件示例

完全使用这些标志,仅更改 Xmx 和 Xms。这些标志可以根据任何大小的内存工作和扩展。但是如果内存小于2G,应用在1.16.5以上的服务器,效果也不会很好。

?用户友好bat文件示例

更方便调整内存大小,可以指定java位置,适用于一个主机多个java版本。

重要 – 必读- 不要使用你所有的内存!

设置 Xms 和 Xmx 值时,如果您的主机说有 8000M 内存,请不要使用 8000M!Minecraft(和 Java)在 Xmx 参数之上需要额外的内存。建议将您的 Xmx/Xms 减少大约1000-1500M以避免内存不足或“OOMKiller”影响您的服务器。这也为操作系统留出了使用内存的空间。有8000M内存吗?使用 6500M 以确保安全。

?

推荐内存

我建议至少使用 6-10GB,无论玩家数量多么少!如果您买不起 10GB 内存,请尽可能多地提供,但请确保您也为操作系统留有一些内存。

?

如果您使用 12GB 或更少的内存运行 MC,则不应调整以下参数。

?

如果您使用的 Xmx 值大于 12G

如果您拥有并使用超过 12GB 的内存,请调整以下内容:

?

-XX:G1NewSizePercent=40

-XX:G1MaxNewSizePercent=50

-XX:G1HeapRegionSize=16M

-XX:G1ReservePercent=15

-XX:InitiatingHeapOccupancyPercent=20

注意:如果您在此之后看到老年代集合的增加,请恢复为基本标志!

?

这些变化的解释:

?

基本标志集的目标是 30/40,以降低空间问题的风险。有了更多的内存,问题就更少了。我们可以为 40/50 的新一代提供更多,并降低储备百分比,因为默认储备已经更大。

区域大小的增加有助于减少巨大的分配,并加快remarking。我们需要在较小的堆上使用较小的区域大小,以确保有足够数量的可用区域

我们可以在 IHOP 为 20 时开始寻找要回收的老年代内存,因为我们有更多的老年代可用于 CPU 空间。

?

标志的技术解释:

1. -Xms 与 -Xmx 相匹配 - 为什么: 永远不要在 -Xmx 可以在内存不足的情况下运行系统的情况下运行服务器。您的服务器应该始终使用整个 -Xmx!

?

然后,您应该确保操作系统在 Xmx 之上有额外的内存用于非 MC/OS 级别的事情。因此,如果 java 全部使用它,你不应该使用 -Xmx 设置运行 MC。现在,这意味着如果 -Xms 低于 -Xmx -你有未使用的内存!未使用的内存是浪费的内存。G1(甚至可能是 CMS 到某个阈值,但我只是说明我所确定的)在提供的内存越多的情况下运行得越好。G1 自适应地选择为每个区域分配多少内存以优化暂停时间。如果你的内存超过了达到最佳暂停时间所需的内存,G1 只会将额外的内存推送到老年代,它不会伤害你(CMS 可能不是这种情况,但 G1 就是这种情况)。改进 gc 行为的基本思想是确保短期对象在年轻时死去并且永远不会被提升。G1 拥有的内存越多,就越能确保对象不会过早升级到老年代。G1 的操作方式与以前的收集器不同,并且能够更有效地处理更大的堆。

?

如果它不需要给它的内存,它就不会使用它。整个引擎的运行方式不同,不会受到太大堆的影响,这是业界普遍接受的信息,在 G1 下保持 Xms 和 Xmx 相同!

?

2. UnlockExperimentalVMOptions? – 以下一些选项需要

?

3. G1NewSizePercent:这些是重要的。在 CMS 和其他 Generations 中,调整 New Generation 会导致 FIXED SIZE New Gen 并且通常通过使用 -Xmn 的显式大小设置来完成。使用 G1,情况会更好!您现在可以为新一代指定总体所需范围的百分比。通过这些设置,我们告诉 G1 不要将其默认的 5% 用于新一代,而是给它 40%!Minecraft 具有极高的内存分配率,在 30 名玩家服务器上至少每秒 800 兆字节!这主要是短暂的物体(块位置)

?

现在,这意味着 MC 真的需要更多地关注新一代才能支持这种分配率。如果你的新生代太小,你将每秒运行新生代收集1-2次以上,这真的很糟糕。你会有很多暂停,TPS有遭受痛苦的风险,服务器将无法保持增加 gc 的成本。然后结合对象现在提升更快的事实,导致您的旧代增长更快。给定更多的 NewGen,我们能够减慢 Young Gen 收集的间隔,从而使短寿命的对象有更多的时间在年轻时死去,并且整体上更有效的 gc 行为。

?

4. G1MixedgcLiveThresholdPercent:控制何时在年轻 gc 集合中包含混合 gc 中的区域,在不进行正常的老年代 gc 收集的情况下保持老年代的整洁。当你的内存低于这个百分比时,老一代甚至不会被包含在“混合”集合中。混合不像一个完整的旧集合那么重,因此对旧集合进行小的增量清理可以保持内存使用量较少。

?

默认值为 65 到 85,具体取决于 Java 版本,我们设置为 90 以确保我们尽可能快地回收旧代中的垃圾,以保留尽可能多的空闲区域。我的旧标志设置为 35,这是一个错误。我倒置了这个标志的意图,因为我认为 35 是 65 所做的。这个数字不应该使用 35。

?

5. G1ReservePercent=20:最新版本中的 MC 内存分配率真的很疯狂。我们冒着可怕的“空间耗尽”的风险,没有足够的可用内存来移动数据。这可确保有更多内存等待用于此操作。默认是 10,所以我们再给它 10。

6. MaxTenuringThreshold=1 : Minecraft 的内存分配率非常高。在那个记忆中,大部分是在伊甸园一代中回收的。但是瞬态数据会溢出到幸存者中。最初完全删除 Survivor 并取得了不错的结果,但确实导致瞬态数据进入旧代,这并不好。Max Tenuring 1 确保我们不会将瞬态数据提升到老年代,但任何在 2 次垃圾传递中幸存下来的数据收藏只是被假定为寿命更长。

?

这样做大大减少了年轻集合中的暂停时间,因为在 Survivor 空间中为一个终身对象复制数据多达 15 次,实际上对于实际旧内存来说确实需要大量时间。理想情况下,gc 引擎会跟踪对象的平均年龄并更快地使用数据,但这不是它的工作原理。

?

考虑到每个年轻收集的平均 gc 率是 10 秒到分钟以上,这不会导致任何“垃圾”被提升,只会延迟在混合 gc 中收集的寿命更长的内存。

?

7. SurvivorRatio=32:因为我们大幅降低了 MaxTenuringThreshold,我们将大幅减少幸存者空间的使用。这释放了更多区域供 Eden 使用。

?

8. AlwaysPreTouch:AlwaysPreTouch 在进程启动时获取内存设置和保留,确保它是连续的,从而进一步提高了它的效率。这提高了操作系统内存访问速度。强制使用透明大页面

?

9. +DisableExplicitgc:许多插件认为他们知道如何控制内存,并尝试调用垃圾回收。执行此操作的插件会触发完整的垃圾收集,从而引发巨大的延迟峰值。此标志禁止插件尝试执行此操作,从而保护您免受其不良代码的影响。

?

10.? MaxgcPauseMillis=200:此设置控制在为您的新一代指定的最小和最大范围之间使用多少内存。这是您希望服务器暂停收集多长时间的“目标”。200 的目标是最多损失 4 个刻度。这将导致短暂的 TPS 下降,但是服务器可以立即弥补这一下降,这意味着它不会对您的 TPS 产生有意义的影响。200ms 低于玩家可以识别的时间。在测试中,将此值限制为一个更低的数字会导致 G1 无法足够快地重新收集内存,并且可能会用完旧代,从而触发完整收集。仅仅因为这个数字是 200 并不意味着每次收集都会是 200。这意味着如果它确实需要它最多可以使用 200 个,我们需要在有内存要收集时让它完成它的工作。

?

11.? +ParallelRefProcEnabled : 优化 gc 进程以使用多个线程进行弱引用检查。不知道为什么这不是默认的……

?

12.? G1RSetUpdatingPauseTimePercent=5:默认为暂停更新 Rset 期间花费的时间的 10%,将其减少到 5% 以使其更多并发以减少暂停持续时间。

?

13.? G1MixedgcCountTarget=4:默认为 8。因为我们的目标是收集速度较慢,使用较少的 old gen,请尝试更快地回收 old gen 内存以避免耗尽 old。

?

14.? G1HeapRegionSize=8M+:默认是自动计算的。对 Minecraft 来说超级重要,尤其是 1.15+的版本,因为在内存不足的情况下,默认计算在大多数情况下都会太低。任何一半这个大小(4MB)的内存分配都将被视为“巨大”并直接提升到老年代并且更难释放。如果您允许 java 使用默认值,您将被销毁,大量内存被视为 Humongous。

?

15.? +PerfDisableSharedMem:导致 gc 写入文件系统,如果磁盘 IO 很高,这可能会导致严重延迟 - 请参阅https://www.evanjones.ca/jvm-mmap-pause.html

地图预生成对减少卡顿至关重要!在您正式运营服务器之前执行此操作。

?

1.获取插件Chunky(它是免费的!)

2.设置合理的边界距离并使用插件命令生成地图。

3.等待...这可能需要几个小时,具体取决于地图大小。

4.离开边界(或设置原版世界边界),这样就不会生成新的区块。

?

插件下载链接:https://www.spigotmc.org/resources/81534/

?

确保设置世界边界,这样您的玩家就不会生成新块!请注意,根据您在 pregen 插件中设置的半径,pregenning 有时可能需要数小时。请记住,在 Paper 及以上版本中,您的 tps 不会受到块加载的影响,但是当服务器的 cpu 过载时,加载块的速度会显着减慢。

?

重要的是要记住,主世界、下界和末地都有需要为每个世界设置的独立世界边界。下界的维度比主世界小 8 倍(如果不使用数据包进行修改),因此如果您设置错误的大小,您的玩家可能最终会在世界边界之外!

?

确保设置一个原版世界边界 ( /worldborder set [diameter]),因为它限制了某些功能,例如可能导致延迟峰值的藏宝图的查找范围。

1.? Spark – 火花

作用:Spark是一个插件,可让您分析服务器 CPU 和内存使用情况。您可以在其 wiki 上阅读如何使用它。

下载链接:https://github.com/lucko/spark

?

2.? Chunky – 区块预生成

作用:预先生成区块,防止玩家探索未生成的区块而造成卡顿

下载链接:https://www.spigotmc.org/resources/81534/

?

3.? Laggremover – 扫地工人

作用:降低内存

下载链接:https://dev.bukkit.org/projects/laggremover

?

4.? Mob Farm Manager怪物农场限制器

作用:解决?物/掉落物/实体卡顿

下载链接:https://www.spigotmc.org/resources/authors/zrips.24572/

https://www.spigotmc.org/threads/guide-server-optimization%E2%9A%A1.283181/

https://aikar.co/mcflags.html

https://github.com/YouHaveTrouble/minecraft-optimization

https://docs.papermc.io/paper/getting-started

感谢观看,MC开服技术交流群:720270549 欢迎加入

点赞、收藏本教程长期更新

搜索

平台注册入口