性能調整

警告

这些文档是为 SpongeAPI 7 编写的,可能已经过时。 如果你觉得你可以帮助更新它们,请提交一个 PR!

Sponge 提供多種效能優化選項,協助你架設在負載重的情況下也能順暢運作的伺服器。

備註

雖然我們嘗試提升所有伺服器的效能,但是提升的程度取決於你的設定。調整完記得測試看看,來確保你的伺服器在效能最佳的狀態。

實體活動範圍

该选项将会影响玩家周围实体加载的行为。降低该数值将导致只有靠近玩家的实体才会加载;升高该数值则会让离玩家较远的实体也得以加载。降低该数值可提升服务器性能,尤其是在有大量实体和玩家的场景下。若需要禁止某种实体的活动,可直接将其设定为 0

小訣竅

当然,你也可以针对某个 特定生物 设定其活动范围。你还大可以选择将 auto-populate 设定为 true ,这样 Sponge 就会帮你自动设定所有生物的活动范围,惟需注意,我们建议你在自动设定完成后关闭此选项(即重新设定为 false )。若有新的生物种类,只需重复此步骤即可。

entity-activation-range {
    # If enabled, newly discovered entities will be added to this config with a default value.
    auto-populate=false
    # Default activation ranges used for all entities unless overridden.
    defaults {
        ambient=32
        aquatic=32
        creature=32
        misc=16
        monster=32
    }
}

非同步亮度計算

這個設定將會讓亮度檢查在獨立的執行序執行以改善效能。

optimizations {
    # Runs lighting updates async.
    async-lighting {
        # If enabled, runs lighting updates async.
        enabled=true
        # The amount of threads to dedicate for async lighting updates. (Default: 2)
        num-threads=2
    }
}

快取可馴服動物的主人

這個設定將會快取可馴服實體的主人 UUID 以減少 data watcher 查詢的時間。

optimizations {
    # Caches tameable entities owners to avoid constant lookups against data watchers. If mods cause issue, disable.
    cache-tameable-owners=true
}

預先合併掉落物

启用后,新生成的掉落物将会尽可能合并在一起,藉由此避免在短时间内刷新大量实体,以及此后合并掉落物引发的大量计算。

optimizations {
    # If enabled, block item drops are pre-processed to avoid
    # having to spawn extra entities that will be merged post spawning.
    # Usually, Sponge is smart enough to determine when to attempt an item pre-merge
    # and when not to, however, in certain cases, some mods rely on items not being
    # pre-merged and actually spawned, in which case, the items will flow right through
    # without being merged.
    drops-pre-merge=true
}

Panda 紅石

一個替代的紅石更新演算法,將會減少紅石造成的方塊更新。

optimizations {
    # If enabled, uses Panda4494's Redstone implementation which improves performance.
    # See https://bugs.mojang.com/browse/MC-11193 for more information.
    # Note: This optimization has a few issues which is explained in the bug report. We are not responsible for any issues this may cause.
    panda-redstone=false
}

調整自動存檔間格

原版 Minecraft 預設每 900 ticks (45 秒)儲存所有區塊。如果你想提高或降低間格,可以改變伺服器的 global.conf 檔案:

world {
    # The auto-save tick interval used when saving global player data.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-player-save-interval=900

    # The auto-save tick interval used to save all loaded chunks in a world.
    # Set to 0 to disable. (Default: 900) Note: 20 ticks is equivalent to 1 second.
    auto-save-interval=900
}

时间间隔越低,意味着保存频率越快,因此服务器的CPU负载和硬盘占用也会随之上升,但频繁的备份对服务器断电后的回档有帮助;与之相对的是,时间间隔越高,服务器的负载也会随之降低,但当服务器出现问题导致存档丢失后,进度损失有可能会十分巨大。

Realtime

啟用這個將會提升當 TPS 低落時的玩家體驗,它不會改善效能。一些特定的實體、方塊實體以及世界時間的更新將會使用真實時間取代以 tick 為基準。

modules {
    # Use real (wall) time instead of ticks as much as possible
    realtime=false
}

举例:幼年动物通常需要 20 分钟成年。当服务器的 TPS 低时,每个动物获得的刷新机会会因此变少,使得成年的时间变相加长。启用此选项后,它们的一部分逻辑将会基于现实世界的时间来刷新。破坏方块的动作也能从中受益——此选项会让“反复破坏方块”的现象消失。

拒絕區塊請求

警告

这是一个旨在改善性能的实验性选项,我们建议你不要在 Mod 服中启用此选项,同时建议你在使用此功能但遇到 TileEntity 加载问题时优先禁用此选项。

world {
    # If enabled, any request for a chunk not currently loaded will be denied (exceptions apply for things like world gen and player movement).
    # Note: As this is an experimental setting for performance gain, if you encounter any issues then we recommend disabling it.
    deny-chunk-requests=false
}

启用此选项后,任何试图加载当前未加载区块并执行各种操作的行为都会被拒绝。只有玩家操作及某些世界生成器允许触发区块加载。