Minecraftサーバーのラグと低TPSの診断

Minecraftの仕組み(遅延の原因は何ですか?)

遅延の原因を理解するための鍵は、Minecraftの仕組みを理解することです。Minecraftサーバーソフトウェアはすべて同じような問題で動作しますが、メインのゲームループにはマルチスレッドやタイミングの制限がありません。サーバーがticになると、TileEntityの更新、エンティティの更新、ブロックの更新、イベント、その他のプロセスがすべて完了するまで実行されます。これはすべて1つのスレッドで発生し、次のループは現在のスレッドが終了するまで開始できません。世界は更新されず、プレイヤーは動いていないように見え、エンティティはその場で凍結されます。理想的には、各ティックは20ティック/秒(TPS)を維持するために50ミリ秒以内で実行する必要があります。これは、最小限の問題で18 TPSで55.55ミリ秒まで低下する可能性があります。これより低いと、ラグが発生し始めます。

遅れの典型的な原因

遅延を引き起こす可能性のあるものはたくさんありますが、それらのいくつかは、ほとんどのサーバーで最も可能性の高い原因です。

  • ファイルの使用:プレーヤーのファイルから絶えず読み取るプラグイン、特に移動、損傷、相互作用などのイベントで。いくつかの例は、PVPフラグまたはプレーヤーファイルから継続的に読み取るGlowプラグインです。
  • データベースとしてのフラットファイル:大きなファイルを使用して、そのファイルまたはメモリ内での格納方法に応じて、大量のデータを繰り返し追跡するためのプラグインがある場合、長い時間がかかります。多くのプラグインはこれを行い、データベースが肥大化したときに処理時間がサーバーのチックにどのように影響するかについての予防策を講じていません。これは、大きなMagicSpells構成をロードするとき、またはPEXやGroupManagerなどの適切なデータベースの代わりにYAMLを使用するアクセス許可システムを使用するときに、多く見られます。
  • 操作が多すぎる:プラグインが生成するエン���ィティが多すぎる場合、または動きなどのイベントで複雑なタスクを実行しようとすると、遅延が発生し始めます。1回の実行にかかる時間が1ミリ秒未満であっても、イベントを1秒間に20k回処理すると、指数関数的になります。これを引き起こす可能性のあるプラグインは、VoxelSniperやWorldEditなどの世界編集プラグインです。または、アンチチートやワールドプロテクションなどの保護プラグイン。
  • ロードされたチャンクが多すぎます:1つのチャンクです16*16*256。これは多くのようには聞こえないかもしれませんが、乗算すると、チャンクごとに65,536ブロックがあることを意味します。各プレーヤーは、構成に応じて、200を超えるチャンクをロードすることができます。13,107,200ブロック以上です。これは多くのメモリを消費します。また、そのうちの1%もTileEntitiesである場合、131,072のTileEntitiesが読み込まれ、すべてのティックを更新する必要があります。ModはTileEntitiesの処理時間が遅いことで有名です。
  • カスケードWorldGen:これは、プラグインまたはmodが、指定されたチャンクの外部に構造を生成する場合です。これにより、次のチャンクにも構造がオーバーフローし始めた場合、次のチャンクが読み込まれ、生成されて、トリガーされます。これは作成者に代わって悪い設計であり、これを行うプラグインまたはModはすぐに削除する必要があります。
  • タイルエンティティ:以下のLagGogglesセクションをご覧ください。

ほとんどのMinecraftサーバーソフトウェアはプロファイリングツールを含めて構築されているため、ラグの原因を見つけることは、今日では一般的に簡単な手順です。

Spigot / PaperSpigotのタイミングレポート

詳細なタイミングレポートを取得するには、次のコマンドを使用できます。

/timings on

あなたは数分待って、あなたのタイミングが実行している間それを遅らせたいでしょう。しばらくして、レポートを生成します。

/timings paste

これにより、取得したすべてのデータを選別する簡単なオプションを使用して、レポートの詳細な内訳が記載されたWebサイトへのリンクが提供されます。これらの読み方については、Spigotのタイミングwikiで詳しく学ぶことができます

ジャンクデータが次の測定値を詰まらせたくないので、タイミングを後でオフにする必要があり、タイミングによってチックに時間が追加されます。

/timings off

スポンジのタイミングレポート

詳細なタイミングレポートを取得するには、次のコマンドを使用できます。

/sponge timings on

あなたは数分待って、あなたのタイミングが実行している間それを遅らせたいでしょう。しばらくして、レポートを生成します。

/sponge timings report

これにより、取得したすべてのデータを選別する簡単なオプションを使用して、レポートの詳細な内訳が記載されたWebサイトへのリンクが提供されます。スポンジのタイミングシステムはスピゴットに基づいているため、スピゴットのタイミングウィキでこれらの読み取り方法について詳しく学ぶことができます

ジャンクデータが次の測定値を詰まらせたくないので、タイミングを後でオフにする必要があり、タイミングによってチックに時間が追加されます。

/sponge timings off

タイミングをリセットすることもできます。

/sponge timings reset

ラグを減らすための手順

  • スクリプトファイルに適切な引数を使用して、Minecraftを起動します。適切なJava引数について詳しくは、こちらをご覧ください
  • フラットファイルの代わりに適切なデータベースを使用するLuckPermsまたはPermissions Managerを使用する
  • チャンクローダーを完全に回避する
  • カスケードワールドジェネレーションの原因となるものをすべて削除する
  • Anti Cheatプラグインを過度に制限しない
  • プレイヤーの視距離を制限する server.properties
  • 一定期間後に敵対モブをクリアする
  • サーバーを毎日再起動して、Javaからのリークをクリーンアップします
  • サーバーをリロードしないでください。これにより、リークやその他の問題が発生します
  • WorldEditやVoxelSniperなどのプラグインのFastAsyncバージョンを使用する
  • 新しいチャンクが常に作成されないように、世界のサイズを制限します
  • 使用するプラグインの数を制限します。すべてのプラグインが適切に構築されているわけではなく、多くの問題が発生すると、遭遇する問題も多くなります

ラグゴーグル

moddedサーバーのラグの大部分は、タイルエンティティに起因します。これらは、ブロックの機能とイベントの処理に使用されるブロック用に作成されたエンティティです。これらの処理に時間がかかりすぎるか、数が多すぎると、1チックあたりの時間が増加し、サーバーの総TPSが低下する可能性があります。これらの問題を視覚化する方法は、LagGogglesと呼ばれるmodを使用することです。このmodはCurseForceからダウンロードできます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。