【幻境云计算】Su迁三线BGP托管全国延迟低于50MS高质量机器,网络稳定无丢包低延迟机器
【幻境云计算】多种机型 E5-2690v2 E5-2670v2 R7-3700X I9-9900ks 更多机型陆续上架中
【幻境云计算】四种全套机型/自营店铺稳定有保障/首月八折优惠/服务超百位客户/点击查看>>
|
- 本指南是根据frash23制作的优化指南而来的重制版,frash23是我们在2017年失去的一位Spigot传奇成员,他对Spigot的贡献是关于性能的调整,我会虚心的将 .yml 部分继续做下去,使Spigot用户来受益。
- 总而言之,Bukkit、spigot、paperspigot 都有非常多的配置选项,允许服主优化服务器性能,本指南将为您服务器的配置文件提供推荐值,并告诉你使用它们的优缺点。
- 本指南基于1.13.2最新版本,如果你在您的配置文件中无法找到我所提供的项,那么你使用的不是最新版本,直接跳过即可。
本帖内容翻译自SpigotMC,如果你的服务器资源占用异常,请携带 Timings 报告到 这里 获得帮助,本人不再提供帮助。
|
- spawn-limits
- 默认值: monsters:70, animals:15, water-animals:5, ambient:15
- 推荐值: monsters:50, animals:12, water-animals:5, ambient:3
- 影响度: Heavy
- 注释: 设置怪物和动物的时候要谨慎,如果太低的话可能会影响玩家的游戏体验,下方的设置将会减少对游戏体验的影响。
- 注意 #1: Ambient=蝙蝠, 没有任何作用.
- 注意 #2: 如果服务器少于15人应该跳过此项目的设置甚至增加这些数值。
- chunk-gc
- 默认值: period-in-ticks:600, load-threshold:0 (关闭)
- 推荐值: period-in-ticks:400, load-threshold:300
- 影响度: Heavy
- 注释: 控制区块的回收
- ticks-per.monster-spawns
- 默认值: 1
- 推荐值: 2
- 影响度: Medium
- 注释: 这个设置将决定服务器多长时间产生一个怪物(时间以tick为单位),如果你服务器有mobSpawn事件,只能设置大于3的数值。
- 注意: 空岛服务器常因为找不到产怪区域而造成延迟。
- autosave
- 默认值: 0 (关闭)
- 推荐值: 6000
- 影响度: Situational
- 注释: 这个设置将启用BUKKIT内置的世界保存功能,BUKKIE的自动保存任务非常高效,当与上方的chunk-gc相结合的时候,世界保存的任务将会减少很多。
- 注意: 如果你在Multicraft的高级设置菜单中使用自动保存,请确保将此项禁用掉。
|
- network-compression-threshold
- 默认值: 256
- 推荐值: 单端:512, 群组:-1
- 影响度: Minor
- 注释: 服务器尝试压缩数据包之前限制数据包的大小,将其设置更高一点可以节省CPU资源,但需要消耗更多的带宽,设置为-1可以禁用。
- 注意: 如果你的服务器位于本地或者使用了面板服,请禁用该功能。
|
- save-user-cache-on-stop-only
- 默认值: false
- 推荐值: true
- 影响度: Minor
- 注释: 开启后将会在服务器关闭后储存新玩家缓存数据,关闭后将会持续保存新玩家缓存数据。
- 注意: 类似于生存服的服务器中将会更加安全,如果你的服务器每天进行备份,应该没问题。
- max-tick-time
- 默认值: tile:50, entity:50
- 推荐值: tile:1000, entity:1000
- 影响度: N/A
- 注释: 在服务器跳到下一个任务之前,实体操作会消耗计算的时间(以毫秒为单位)。这样设置可以禁用这个不稳定的特性,虽然设置较低可以优化服务器性能,但它也会导致一些不值得处理的错误。
- 注意: 如果你想知道更多关于为什么你应该禁用这个,请阅读 这里 。 请记住,这是一个熟练的开发人员的个人意见,而不是Spigot或是我自己(指本优化指南的作者)。
- mob-spawn-range
- 默认值: 4
- 优化值: 3
- 影响度: Minor
- 注释: 这里会设定玩家周围的最大刷怪距离(以区块为单位)。我们在 bukkit.yml 中限制了怪物的数量之后,这会将玩家周围的怪物凝聚起来,使其看起来的刷怪机制像是正常的。如果你在 bukkit.yml 文件中降低了刷怪限制,只能降低这个值。
- 注意: 虽然此处数值较低会降低黑暗处的刷怪率,但应该并不明显。
- entity-activation-range
- 默认值: animals:32, monsters:32, misc:16
- 优化值: animals:12, monsters:20, misc:3
- 影响度: Medium-Heavy
- 注释: 这个设置将会影响到实体的激活范围,因为这些范围以外的实体经常不会被激活。请记住,较低的设置可能会出现“懒惰”的怪物。
- 注意: "misc" 包括掉到地面上的悬浮物和经验球;设置为 2 是比较安全的,设置为 1 可能会出现一些问题。
- merge-radius
- 默认值: item:2.5, exp:3.0
- 优化值: item:4.0, exp:6.0
- 影响度: Heavy
- 注释: 将地面物品合并起来可以大大的减少对CPU的消耗。设置更高将意味着更多的物品成堆显示,甚至可以让你不必使用像 clearlag 这样的插件。
- 注意: 合并物品可能会导致物品偶尔消失,**情况下可能会迫使物品穿过墙或者岩浆合并。
- view-distance
- 默认值: 10
- 优化值: 4-6
- 影响度: Heavy
- 注释: 这是所有文件中影响性能最大的选项,但是对于游戏的影响也很大,这限制了玩家的区块渲染距离,大多数服务器应该设置为5-6,但是一些低规格,玩家数量多的玩家应该设置为4-5.
- nerf-spawner-mobs
- 默认值: false
- 优化值: true
- 影响度: Medium-Heavy
- 注释: 启用后,从刷怪笼里出来的怪物将不会进行游泳、跳跃、攻击、移动等操作,虽然在RPG服务器中影响可能较大,但它也会显著地提高性能,怪物合并插件会是一个很好的解决方案。
- 注意: PaperSpigot增加了一个选项,可以将没有激活的从刷怪笼里出现的怪物让其不间断的跳跃/游泳(参考: spawner-nerfed-mobs-should-jump),这样可以在不影响服务器性能的情况下让你的农场运作。
- item-despawn-rate
- 默认值: 6000
- 优化值: 更少?
- 影响度: Medium
- 注释: 设置地面实体被删除的时间(以毫秒为单位)。虽然可以显著的降低对性能的影响,但是在例如生存的服务器中对游戏的影响度也是蛮高的,请自行斟酌。
- arrow-despawn-rate
- 默认值: 1200
- 优化值: 100-600
- 影响度: Minor
- 注释: 设置箭头射出后的消失时间(以毫秒为单位),虽然有些服务器有足够的理由让箭存在更长时间,但是大多数服务器会修改此项,从而减少CPU。
- 注意: 你不可以从骷髅,无限弓或者是倾斜的弓箭上拾取箭头。
|
警告: PaperSpigot 是一个非官方的服务端核心,而且在Spigot论坛是不被支持的,虽然被认为不如Spigot核心稳定,但是它却提供了大量的优化性能的选项。如果你遇到Paperspigot相关的问题,应该在Paperspigot的问题追踪器上报告,而不是在Spigot论坛。
- optimize-explosions
- 默认值: false
- 推荐值: true
- 影响度: Minor
- 注释: 在每次爆炸后立即清除已经死亡的或无意义的实体。
- mob-spawner-tick-rate
- 默认值: 1
- 推荐值: 2
- 影响度: Minor
- 注释: 当玩家用刷怪蛋放置生物的时候,延迟多少时间生物被激活,以毫秒为单位。如果你的生物严重影响CPU负载,只能设置为10.
- disable-chest-cat-detection
- 默认值: false
- 推荐值: true
- 影响度: Minor
- 注释: 默认情况下,当打开箱子的时候会扫描豹猫,虽然这消除了Minecraft的游戏机制,但是这样毫无意义功能的存在并不重要。
- container-update-tick-rate
- 默认值: 1
- 推荐值: 2
- 影响度: Minor
- 注释: 此设置会更改打开容器时,容器内容的刷新频率,2-3对服务器没有影响,而且会省下一些CPU资源,请设置在5以下避免库存故障。
- fire-physics-event-for-redstone
- 默认值: true
- 推荐值: false
- 影响度: Medium
- 注释: 关于BlockPhysicsEvent事件的调整,关闭会释放大量的CPU。
- 注意: 如果你有专门为红石系统监听BlockPhysicsEvent事件的插件,此项应该不更改。
- grass-spread-tick-rate
- 默认值: 1
- 推荐值: 2-3
- 影响度: Medium
- 注释: 这个选项关系到草方块的扩散,对CPU会有一点的优化。
- 注意: 空岛服务器应该把这里设置为1.
- despawn-ranges
- 默认值: soft: 32, hard: 128
- 推荐值: soft: 28, hard: 96
- 影响度: Medium
- 注释: 使用较低的数值,可以更快的清除无用的怪物,并允许在玩家流量多的区域产生更多的怪物。
- 注意: 这可能会使怪物神秘的消失。
- hopper.push-based
- 默认值: false
- 推荐值: true
- 影响度: Heavy (situational)
- 警告: 作者认为这并不稳定
- 注释: 漏斗机制优化,漏斗会对服务器产生很大的影响,这个我会在帖子下面详说。
- non-player-arrow-despawn-rate
- 默认值: -1 (使用Spigot.yml的arrow-despawn-rate)
- 推荐值: 60 (3 秒)
- 影响度: Minor
- 注释: 与Spigot.yml的arrow-despawn-rate基本相同
- keep-spawn-loaded
- 默认值: false
- 推荐值: true
- keep-spawn-loaded-range
- 默认值: (查看spigot.yml)
- 推荐值: 6-16
- 影响度: Medium (situational)
- 注释: 当keep-spawn-loaded设置为true时,刷怪区将会全天加载,虽然这对性能没有太大的影响。
- anti-xray.enabled
- 默认值: false
- 推荐值: true
- 影响度: N/A
- 注释: 虽然这个设置会消耗你很多的CPU,但是这将会是最有效的反矿追系统,你不会找到更有效更干净的反矿追系统,更好的是,你不需要插件!
- 注意: Spigot 核心和老版本 PaperSpigot 应该考虑关闭此项使用插件.
|
- TPS全称为 Ticks Per Second ,是影响服务器卡顿的主要因素,不会因为玩家的地理位置而影响。
- Minecraft服务器性能基于每秒20个tick,这就是因为为什么一个完美的服务器的TPS为20.0,每个tick都会使服务器计算一些东西,TPS低于20的服务器表明服务器无法跟上一定的任务,那么只能保证重要任务的的进行,被迫跳过一些任务,这个跳过任务的过程就被称为 “服务器延迟滞后”,如果服务器延迟平均在19.95-20之间,那么你不用担心服务器延迟问题。
- 20.0 =完美无瑕 - 漂亮。
- 19.95-19.99 =很棒 - 不明显的TPS损失。 大多数服务器都在这里。
- 18.5-19.94 = 一般 - 也许是一些轻微的问题,但没有任何游戏影响。
- 17.0-18.4 =差 - 需要认真修复。
- <17.0 = 无法正常游戏......
|
- Ping反映了属于在服务器与客户机之间数据传输所需时间(以毫秒为单位)。客户机与服务器主机地理位置越远,传输所需时间越长。宽带问题也可能影响ping速度,但这是不常见的,这也会导致客户机与服务器的连接速度过慢。
- 1-90 =太棒了!
- 91-179 = 好 - 可能在PvP中略有劣势。
- 180-299 = 差 - 与块/玩家/实体交互时经常滞后。
- 300-499 = 糟糕 - 几乎无法进行游戏。
- 500+ = 你应该找一个离你更近的服务器。
|
- 不要把TPS和FPS搞混,FPS反映了客户端处理画面等情况,FPS 100% 指客户端,与服务器没有任何关系!
- 服务器可以做的就是削减服务器的功能来提高FPS,这样渣机就可以跟上,即使是这样也不会产生太大影响,推荐一个名为 Optifine 的流行免费MOD。
- Optifine的MCBBS搬运地址: http://www.mcbbs.net/thread-606019-1-1.html
- 60+ = 完美 - 超过60 FPS的任何东西对于MineCraft而言都是过度的。 考虑将FPS限制在100以下,以避免对您的机器造成不必要的压力。
- 40-59 = 太棒了 - 不会产生影响。
- 21-39 = 好 - 偶尔渲染故障。
- 11-20 = 差 - 应该进行处理。
- 1-10 = 坏 - 客户应该使用Optifine,减少粒子,并设置渲染距离<6。
|
- 花费时间观看由其创建者制作的关于Timings的视频指南。 视频分解了Timings v1(Spigot)和v2(Paper)。 视频长度令人畏惧,但任何正经的的服务器管理者都应该知道如何识别服务器的问题。
- 很抱歉我还没有能力汉化此视频,此视频没有字幕,我很难通过声音来汉化,我能做的仅仅是从油管搬运到bilibili,如果你有能力可以看看,更希望能有人将此视频汉化。 —— XJue_DaDa
|
获取 Timings 数据:
- 如果要获取Timings数据,先运行 /timings on 命令。
- 然后,等待几分钟,运行 /timings paste 命令。
- 然后可以获取到一个timings的网页链接,打开即可。
了解Timings:
- MineCraft的游戏循环在Tick线上运行,在1秒内有20个tick,这意味着每50毫秒就会进行一次tick。在其中一个ticks中,处理各种事件,所有安装在服务器上的每个插件都会以不同的方式处理这些事件(例如,WorldGuard之类的插件使用PlayerMoveEvent确保玩家不在他不应该去的地方)
- 这是Timings变得有用的地方,它允许你监视服务器上安装插件处理时间所需要的时间,这样你就可以查看哪里引起了滞后问题没因为行为不当的插件需要花费很长的时间来处理时间,这个可能导致tick循环值延迟,所以服务器的tick率低于20。
Aikar的Timings使您可以更轻松地读取从你服务器上收集的数据。 报告分为每个插件的部分。 前两部分是Minecraft自己的tick事件(载入/卸载实体,区块等),其余部分为插件部分(按插件花费的总时间排序)。
在报告的顶部,有一些数据点:
- Total: 处理事件所花费的总时间。
- Sample Time: 采样花费的时间。
- Average Entities: 激活实体的平均数,后面跟总实体的平均数。
- Average Players: 在采样时间内登陆的平均玩家数量。
- Average TPS: 采样时间内服务器的平均tick率(tps)。
在插件部分的标题中,在名称和版本后面有两个数据点:
- Total: 在采样时间内,处理时间花费时间的百分比。
- Pct: 此采样的时间百分比。
每个部分在插件处理的每个事件中都有几列数据:
- Pct Total: 处理事件所花费的总样本时间的百分比。
- Pct Tick: 处理事件所花费的各个tick的百分比。
- Total: 采样时间内花费的总时间。
- Avg: 每个tick花费的平均时间量。
- Count: 插件触发和处理事件的次数。
- Vio: 此插件导致TPS丢失的百分比。
- Event: 事件的名称。
|
- 在我开模组服的时候,我发现暮色森林MOD所生成的暮色世界占用非常高,我询问了很多人,查阅了很多资料,最后总结出了一种比较好的方法。
- 一个暮色世界的地图,是由多个区块组成的,在一个从来没有玩家去过的区块,在地图文件里是没有任何记录的,如果一个玩家到了这个区块,那么服务器会生成这个区块的文件并写入硬盘,通过玩家不断地跑图,不断地重复此过程,所以就导致了服务器的卡顿。
目前的解决思路为: 用WorldBorder限制地图边界,并且使用此插件将边界内的区块文件全部生成出来,这样就从根本解决了卡顿问题。不过生成区块文件这个过程是十分漫长的,需要好几个小时,在这个过程中不建议服务器有玩家。
- 那么。通过服务器的长时间运营,地图是需要重置的,尤其是这种暮色世界的地图,需要不断地重置,所以上面的解决方法就难以解决我们的需求,总不能天天生成地图吧?
当时本人想到了一个方法,地图的区块文件是储存在地图文件夹的 regoin 文件夹里的,我使用插件将暮色世界的区块文件生成出来,我将 regoin 文件夹复制出来,作为一个“样例”,在BAT文件中加入了三行操作文件的代码,实现了这么一个功能:
开启服务器BAT,在加载JAR文件夹之前,删除原来的 regoin 文件夹,将我之前复制出来的文件夹再复制到服务端地图文件夹里面,这样就实现了每次开服,就会执行一次删除复制regoin文件夹的操作,问题就解决了。
|