パフォーマンスの調整

Sponge は高負荷な環境でもラグのないサーバーを運営するためのパフォーマンス改善のオプションを提供します。

注釈

サーバーのパフォーマンスを向上させようと私たちが取り組んでいるとはいえ、実際のパフォーマンスはあなたの設定に依存します。 Sponge サーバーを最大限活用するためにテストを行いましょう!

エンティティの有効化範囲

This setting will alter the loading behaviour of entities around players. Lowering the value will only load close entities, while raising it will also load entities that are far away from the player. Lower this to improve your servers performance, especially with high entity and player counts.

ちなみに

それぞれのモブごとに 有効化範囲を設定できます。 auto-populatetrue に設定すれば、 Sponge はすべての利用可能なモブを有効化範囲リストに追加します。この設定はリストの値を設定したあとに無効化することをおすすめします。ゲームに新たにモブを追加した場合は、同じ手順を踏むことで新たなモブがリストの下部に追加されます。

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 overidden.
      defaults {
          ambient=32
          aquatic=32
          creature=32
          misc=16
          monster=32
      }

懐いている飼い主のキャッシュ

エンティティが懐いている飼い主の UUID をデータウォッチャーの索引に追加します。

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
    }

Lighting Patch to Ignore Unloaded Chunks

Enabling this setting avoids loading lighting data from not yet generated chunks. This reduces disk access and chunk generation and thus improves performances while applying light levels to blocks.

optimizations {
      # This prevents chunks being loaded for getting light values at specific
      # block positions. May have side effects.
      ignore-unloaded-chunks-on-get-light=true
      }

Cache Chunk Lookups

This setting enables Sponge’s internal chunk caching to improve the server’s performance. It uses a small, additional amount of memory for caching purposes. If you run out of memory, try to disable it.

optimizations {
      # Caches chunks internally for faster returns when querying at various
      # positions
      chunk-map-caching=true
      }

Inline Block Position Checks

This setting inlines the check for if a block position is valid in a world.

optimizations{
      # Inlines a simple check for whether a BlockPosition is valid
      # in a world. By patching the check, the JVM can optimize the
      # method further while reducing the number of operations performed
      # for such a simple check. This may however break mods that alter
      # world heights and can thus be disabled in those cases.
      inline-block-position-checks=true
      }

自動保存間隔の調整

vanilla の Minecraft ではすべてのチャンクを 900tick (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 やストレージへの負荷を増大させますが、サーバーがロックに陥った場合や停電時のデータ破損が減少します。逆に間隔を広くすればハードウェアへの負荷は小さくなりますが、サーバー障害の際に失われるデータが多くなります。