Minecraft.How
読み込み中...
コンテンツへスキップ
Foliaのスレッド設定とリージョン読み込み指標を表示するMinecraftサーバーコンソール

Foliaで変わるMinecraftサーバー: 地域分散マルチスレッドの導入と性能改善ガイド

Alex Maftei
Alex Maftei
@ice
更新日
118 閲覧
TL;DR:Foliaは、処理を複数のCPUコアへ分散できるPaperのマルチスレッド対応フォークです。世界各地にプレイヤーが分散する200人以上の大規模Minecraftコミュニティを想定しており、プラグイン互換性との引き換えに大幅な性能向上を実現します。
GitHub · Minecraftコミュニティプロジェクト

Folia (PaperMC/Folia)

専用サーバーに地域分散型マルチスレッドを追加するPaperのフォークです。

GitHubでスターを付ける ↗
⭐ 4,228スター💻 Shell📜 GPL-3.0

大規模なMinecraftサーバーを運営していて、誰かが新しいチャンクを探索したり、同時接続者数がピークに達したりするたびにTPSが急落するなら、Foliaが探していた答えかもしれません。このPaperベースのフォークは、ワールドを独立したリージョンに分割し、それぞれを個別のスレッドで動かすことで、Minecraftサーバーの計算処理を根本から再設計しています。1本のメインスレッドですべてを同時に処理する代わりに、FoliaではCPUコアを実際に並列動作させられます。

Foliaとは

FoliaはModでもプラグインでもありません。メインスレッドという概念そのものを取り除くため、Paperサーバーを根本から書き直したものです。近接するチャンクは「リージョン」としてまとめられ、各リージョンがスレッドプール上で独自のティックループを実行します。1本のスレッドですべてを細かく管理するのではなく、ワールドの各部分に独立したプロセッサーを割り当てるイメージです。

このアーキテクチャが重要なのは、サーバーの拡張方法そのものが変わるからです。

Paperはシングルスレッド設計の範囲内でも、膨大な数のプレイヤーが利用するサーバーを適切に処理できます。しかし、広大なワールドに数百人のプレイヤーが分散する次の規模へ進むと、ボトルネックが現れます。Foliaは1本のスレッドからさらに性能を絞り出そうとはしません。代わりに、問題の構造そのものを変えます。


Foliaを導入するメリット

最も恩恵を受けるのは、プレイヤーが広範囲に分散する大規模サーバーです。複数のディメンションに浮島が点在するSkyblockネットワーク、巨大なサバイバルワールド、ダンジョンが各地に配置されたカスタムRPGサーバーなどで、Foliaは真価を発揮します。プレイヤーが1か所のスポーンエリアに集中する場合、同じような性能向上は得られません。しかし、200人以上が別々の地域を探索するSMPなら、その差は明らかです。

最初に伝えておくべき点があります。Foliaは、そのまま置き換えて使えるものではありません。

プラグインはFoliaのマルチスレッド環境に合わせて書き直す必要があります。これが導入に伴う最大の代償です。ただし、Foliaを検討するほどの規模なら、プラグイン環境も独自開発が中心かもしれません。メインスレッドの存在を前提とする一般的なPaperプラグインは、Folia上ですぐに動作しなくなります。

それでも、得られる効果は本物です。適切に設定すれば、CPUコア数に応じて拡張する実質的な性能向上が期待できます。標準のPaperでは実現できない利点です。


インストールと基本設定

まず、PaperMCのダウンロードページから最新ビルドを入手します。2026年時点で、Foliaは新しいMinecraftバージョン、1.20.4以降に対応しています。jarファイルをサーバーディレクトリへダウンロードしてください。

bash
wget https://api.papermc.io/v2/projects/folia/versions/latest/builds/latest/downloads/folia-latest.jar
mv folia-latest.jar folia.jar

次に、eula.txtファイルでEULAに同意する必要があります。サーバーを一度起動して、設定ファイルを生成します。

bash
java -Xmx30G -Xms30G -jar folia.jar nogui

サーバーを停止するとfolia.yml設定ファイルが作成され、ここから本格的な作業であるスレッド設定に入ります。単に「スレッド数を増やせば完了」というものではありません。PaperMCのドキュメントでは、本番環境へ移行する前にワールドを事前生成することが推奨されています。これにより、チャンク読み込みの負荷を大幅に軽減できます。


スレッド設定、本当の難所

多くの人が混乱するのはここです。folia.ymlには`threaded-regions.threads`という設定がありますが、単純に最大値へ設定してはいけません。プロジェクトが示す目安では、Netty I/O用スレッドをプレイヤー200~300人あたり約4本、チャンクシステムI/O用スレッドを約3本、ワールドを事前生成している場合はチャンクシステムワーカーを約2本割り当てます。そのうえで、総割り当てがCPUコアの80%以内になるよう、残りをティックスレッドに使用します。

32コアのマシンで500人のプレイヤーを処理する場合、おおよその割り当ては次のとおりです。

  • Netty I/O: 8スレッド
  • チャンクシステムI/O: 6スレッド
  • チャンクシステムワーカー: 4スレッド
  • ティックスレッド: 80%の上限まで残りのコアを使用、約10スレッド

100%を割り当ててはいけません。プラグインや予期しないバックグラウンドタスクが独自のスレッドを生成し、サーバーをクラッシュさせる可能性があるためです。80%という上限は、実際に重要な安全ラインです。

それでも、これはあくまで出発点です。負荷がかかった状態で実際のスレッド使用状況を監視し、調整してください。folia.ymlファイルには、各オプションについて詳しいコメントが記載されています。


利用できる主な機能

リージョンの分離。各リージョンは20 TPSで独立してティック処理を行います。1つのリージョンで発生したラグが、ほかのリージョンへ連鎖することはありません。ダンジョンシステムの最適化が不十分でも、スポーンエリアの性能まで低下させずに済みます。

適切なスレッドスケーリング。Paperのプラグイン用スレッドプール方式では、ティックに直結する処理が依然としてボトルネックになります。一方、Foliaのリージョンはティックロジックを並列で実行します。コア数の増加が、実際のティック処理能力の向上につながります。完全な比例関係ではありませんが、確かな効果があります。

非同期チャンク読み込み。チャンクI/Oはリージョンスレッドの外部で処理されます。ストレージの読み込みが急増した際に、シングルスレッドサーバーで起こるような突然のフリーズを避けられます。

ほかにも、サーバー側のチャンク最適化、事前生成したチャンクのキャッシュ、リージョン単位で設定可能なメモリ制限を標準でサポートしています。ドキュメントを詳しく調べる手間を惜しまなければ、機能の充実度には驚かされるでしょう。


動作しなくなる機能と対処方法

多くのプラグインは、メインスレッド上で動作し、同期処理なしでもワールドの状態を安全に読み書きできると想定しています。Foliaでは、その想定は通用しません。たとえば、プラグインが「ブロックXが石か確認してから空気に置き換える」という処理を行う場合、Paperでは起こらなかった競合状態がスレッド間で発生する可能性があります。プラグインの不具合は避けられないと考えてください。

具体的には、次のような問題があります。

  • リージョン間のテレポートは処理が複雑になり、プラグインの実装次第ではデッドロックが発生する
  • ワールド境界のチェックはリージョンを考慮するため、想定とは異なる動作になる場合がある
  • データ破損を防ぐには、タイマーやスケジュールタスクをリージョンセーフにする必要がある
  • リージョン境界を越えるエンティティ追跡にはプラグインの更新が必要になる

Foliaのドキュメントには、互換性のない実装パターンが明記されています。プラグインの互換性を評価する際は、ティックロジックを直接操作していないか、チャンクデータへシングルスレッドでアクセスできる前提になっていないかを確認してください。


Foliaが適しているケース

16コア以上のマシンを使用している。サーバーの同時接続者数が日常的に200人を超える。プレイヤーが1か所のスポーン地点ではなく、ワールド内の広範囲に分散している。独自のプラグイン基盤がある、または既存プラグインを移植する用意がある。

この4つの条件を満たすなら、Foliaの導入候補です。

8コアのVPSで50人のサーバーを運営しているなら、Paperを使い続けましょう。互換性の問題に見合うほどの効果は得られません。100人規模のSMPでも、全員がスポーン地点に集まるなら、Foliaの効果はありますが、広範囲に分散するサーバーほど劇的ではありません。

しかし、次世代の本格的なマルチプレイMinecraftコミュニティを構築するなら、Foliaにはより高い性能上限があります。大規模サーバーで活動するadderall_abuserのようなスキンやironmouseのようなスキンを使うプレイヤーをはじめ、活発なコミュニティメンバーはすでにこの分野を模索しています。配信コミュニティやModrinthの大規模サバイバルプロジェクトを確認すれば、Foliaを目にする機会が増えていることがわかるでしょう。


検討する価値のある代替手段

Paper。現在も大半のサーバーにとって定番の選択肢です。安定しており、仕様が広く理解され、膨大なプラグイン環境が整っています。Foliaが大げさに感じられるなら、Paperの最適化機能、非同期チャンク読み込みやエンティティAIのティック削減などで十分かもしれません。

Purpur。プレイヤー単位の最適化機能を追加したPaperのフォークです。プレイ状況が大きく異なるサーバー、たとえば放置中のプレイヤーと活発に探索するプレイヤーが混在する環境に向いています。Foliaほど大きなアーキテクチャ変更はなく、より対象を絞った性能向上が得られます。

Fabric Server。プラグインではなくModのサポートが必要なら、現在のFabric環境はサーバー用途でも非常に充実しています。Foliaと同じ方式のマルチスレッドではありませんが、軽量で高速です。

率直に言えば、Foliaは特定用途向けです。特定の規模で発生する、特定の問題を解決するために作られています。それ以外のサーバーでは、入念に設定したPaperが今も適切な選択です。

執筆者について
Alex Maftei
Alex Mafteiリードライター

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

友達にシェアしよう!

よくある質問

Foliaは既存のPaperプラグインと互換性がありますか?
多くのPaperプラグインは、単一のメインスレッドと安全ではないワールドアクセスを前提としているため、Foliaでは動作しなくなります。マルチスレッドに対応させるには、プラグインを明示的に書き直す必要があります。互換性の要件はPaperMCのドキュメントで確認してください。Folia対応の新しいプラグインも一部ありますが、まだ多くはありません。移行時にはプラグインを慎重に監査し、場合によっては独自に書き直す必要があります。
Foliaでは、どの程度の性能向上を期待できますか?
性能向上の幅は、CPUコア数とプレイヤーの分散状況によって変わります。16コアのサーバーで400人のプレイヤーが広範囲に分散している場合、Paperと比べてスループットが2~4倍向上する可能性があります。ただし、効果はスレッド設定、ワールドの事前生成、プラグインの最適化に大きく左右されます。プレイヤーが1か所に集まるサーバーでは、得られる効果はわずかです。確かな改善は見込めますが、適切な調整が欠かせません。
Foliaを実行するために必要な最低限のハードウェアは?
プロジェクトでは、スレッド数ではなく物理的なCPUコアを最低16コア用意することを推奨しています。16コア未満でも動作しますが、アーキテクチャの利点は小さくなります。マルチスレッドの追加負荷に対応できる十分なRAMも必要で、通常は通常構成より8GB以上多く見積もります。チャンクI/Oが並列で実行され、ボトルネックになる可能性があるため、SSDストレージも重要です。16コア、64GB RAM、NVMeを備えたサーバーが堅実な出発点です。
FoliaはMinecraft 1.20より前のバージョンに対応していますか?
いいえ。Foliaを利用できるのはMinecraft 1.20.4以降のみです。リージョン分割に必要なアーキテクチャ変更は、古いバージョンでは対応できませんでした。1.19以前を使用している場合は、PaperまたはPurpurを使う必要があります。現在対応している最新バージョンは、公式ダウンロードページで確認してください。
データを失わずに既存のPaperサーバーをFoliaへ移行できますか?
技術的には可能ですが、移行作業は複雑です。ワールドファイルには互換性がありますが、プラグインは書き直す必要があります。最も安全な方法は、ワールドのコピー上でFoliaを実行し、十分にテストしてから切り替えることです。大規模サーバーのプラグイン環境では、2~4週間のデバッグ期間を見込んでください。多くのコミュニティは、稼働中の環境を直接移行せず、まず別のハードウェアでテストしています。

Have a Question or Tip about this Guide?Community Q&A

Ask a question or help other players below. Join the discussion and share your Minecraft tips!

コメント

まだコメントはありません。最初にご意見を共有しましょう!

当サイトでは、快適なご利用のためにCookieを使用しています。本サイトを継続してご利用いただくことで、Cookieの使用に同意したものとみなされます。 プライバシーポリシーを読む