【ラズパイ】重いマイクラサーバーを劇的に軽くする方法

サーバー

ラズパイのでマイクラサーバーを作ったけど重くてマルチプレイができない…

そんな悩みにお答えします。

私もMinecraftをプレイしていてこのような悩みに直面したことがあります。

今回はRaspberry Pi(ラズパイ)で快適なマインクラフトサーバーを構築する方法を紹介します。

この記事の内容
  • マイクラサーバーが重い原因
  • 軽いマイクラサーバーの立て方
  • 動作をを軽くするポイント

マイクラサーバーが重い原因

マイクラサーバーが重い原因として考えられることは以下の通りです。

ひとつずつ改善していけばかなり軽くなると思うので、最後まで頑張りましょう!

特に一つ目の「使っているサーバーが重い」に関しては、これから紹介するPaperMCというサーバーを使うことでかなり軽くなるので、まずここから始めていきます。

重さの指標

今回は以下の項目を重さの指標として扱います。

  • CPU使用率
  • メモリ使用率
  • 初回起動にかかった時間
    +体感の重さ

動作環境は

  • Raspberry Pi 4 4GBモデル
  • 割り当てメモリ 2GB
  • Minecraft 1.17 サバイバル
  • Java17
  • screen

です。

ベースとして、公式サーバーを使った場合の重さ

CPU使用率98.4%
メモリ使用率68.6%
初回起動にかかった時間2分26秒
体感の重さ動物の動きもかなりカクカクしていて重く感じた
topコマンドを使用しています。

ちなみにサーバーを起動していないときのCPU使用率は2%くらいでした。

サーバー側の設定

PaperMCを使う

「使っているサーバーが重い」の改善策として、PaperMCというサーバーを使う方法があります。

初めてマイクラサーバーを立てたときは、Minecraftの公式サイトからファイルをダウンロードし、それを実行してサーバーを起動した人が多いと思います。

そして今回は、公式サーバーより軽いPaperMCというサーバーをダウンロードして使うというわけです。

レンタルサーバーを借りて使うというわけではありません。

Twitterの声

ダウンロード

サーバーファイルはPaperMCの公式サイトからダウンロードします。
https://papermc.io/downloads

過去のバージョンは、サイト下部の「Legacy」からダウンロードできます。
クリックすると二つの質問がされますので、一つ目はNo、二つ目はIt will be closedと答えてください。

起動

サーバーのディレクトリにダウンロードしたファイルを入れます。
今まで使っていたserver.jarファイルは削除します。

サーバーを起動。

cd サーバーのディレクトリ
java -Xmx1G -Xms1G -jar ダウンロードしたファイル.jar nogui

Xmx・Xmsの後の数値はご自身のラズパイのメモリ容量を超えない範囲で設定してください。(多い方がいいです)

エラーが出た場合、JavaのバージョンとMinecraftのバージョンが合っていない事が多いです。

(個人的な)推奨バージョン

マイクラのバージョンJavaのバージョン
1.8〜1.16Java8かJava11
1.17〜Java17

基本的にJavaは一番新しいバージョンを使えば動きます。
古いJavaで新しいマイクラサーバーを動かそうをするとエラーが出ます。

以下のコマンドでインストールします。

sudo apt install openjdk-8-jdk #Java8
sudo apt install openjdk-11-jdk #Java11
sudo apt install openjdk-17-jdk #Java17

Java17のインストール方法はこちらの記事でも解説しています。

ラズパイにJava17をインストールする マイクラ1.18対応
ラズパイにJava17をインストールする方法を解説します。Minecraft Java版のvar1.18にも対応しています。

paper1.16の公式推奨バージョンはJava1.16なので、サーバーをJava8,11で動かすと警告が出ます。
Java16はインストール方法が少しややこしいのでここでは説明していません。記事を投稿する予定ですのでお待ちください。

初回起動の際はeulaに同意するよう求められます。

nano eula.txt #eula.txtを編集

==eula.txt=================================
                            
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://accou>
#You also agree that tacos are tasty, and the best food in the world.
#Sun Sep 11 19:59:38 JST 2022
eula=false # false -> true に変更

===========================================

起動します。

java -Xmx1G -Xms1G -jar ダウンロードしたファイル.jar nogui

"Timings Reset"と表示されれば完了です。

コマンドの最後に”nogui”と記入することで、メモリの使用量を削減できます。

サーバーの停止

stop

サーバーを起動したままssh接続を切りたい方は、こちらの記事を参考にしてください。

マイクラサーバーがssh接続を切っても動くようにする[screen]
screenを使ってマイクラサーバーがssh接続を切っても動くようにする方法を解説します。screenの基本操作も初心者の方でも分かりやすいように解説しています。

負荷の比較

項目公式サーバーPaperMC
CPU使用率98.4%31.7%
メモリ使用率68.6%49.0%
初回起動にかかった時間2分26秒1分7秒
体感の重さ動物の動きもかなりカクカクしていて重く感じた動物の動きが滑らかでそこまで重くは感じなかった。
topコマンドを使用しています。

もう明らかに軽くなっているのがわかりますね!

起動直後はCPU使用率が90%近くまで上がりますが、その後は20%〜50%の間に収まることがほとんどでした。

Minecraft
いえい!

サーバーの動作設定

続いては、サーバーの設定ファイルを編集して軽くします。
前述のPaperMCを使うことが前提ですので、まだの方はそちらを先に行ってください。

参考記事

https://shockbyte.com/billing/knowledgebase/155/Optimize-paperyml-to-Reduce-Lag.html

「めんどくさっ!」と思うかもしてませんが5分もかからないですよ〜

設定ファイルの編集

paper.ymlを編集します。

行番号項目初期値変更後
129行目armor-stands-ticktruefalse
130行目non-player-arrow-despawn-ratefalsetrue
167行目max-auto-save-chunks-per-tick248
169行目optimize-explosionsfalsetrue
197行目disable-chest-cat-detectionfalsetrue
328行目hopper:
disable-move-event
falsetrue

行番号はバージョンによって異なることがあります。

負荷の比較

項目公式サーバーPaperMC
初期設定
PaperMC
設定後
CPU使用率98.4%31.7%27.9%
メモリ使用率68.6%49.0%41.1%
初回起動にかかった時間2分26秒1分7秒
体感の重さ動物の動きもかなりカクカクしていて重く感じた動物の動きが滑らかでそこまで重くは感じなかった。設定前とは特に差は感じられなかった。
topコマンドを使用しています。

数値を見れば軽くなっていますが、体感としての変化はほぼ感じませんでした。

変更した設定の内容からして、以下のような場合に効果が現れると思います。

  • サバイバルをそれなりに進めている
  • 大人数(6人程度まで)でプレイしている

環境によって差が出るのでご注意ください。

余計なアプリの停止

使わないのに動いているアプリを停止します。

GPUメモリの設定

サーバーを動かす上ではGPUはほぼ使わないので割り当てメモリを減らします。

sudo raspi-config nonint do_memory_split 16

アプリの停止

停止したくないアプリがあれば停止しなくてもOKです。
(Bluetoothなど)
#Bluetooth関連
sudo systemctl stop hciuart.service
sudo systemctl stop bthelper@hci0.service
sudo systemctl stop bluetooth.service

sudo systemctl disable hciuart.service
sudo systemctl disable bthelper@hci0.service
sudo systemctl disable bluetooth.service

#キーボードショートカット
sudo systemctl stop triggerhappy.service
sudo systemctl stop triggerhappy.socket

sudo systemctl disable triggerhappy.service

設定を反映させるために再起動します。

sudo reboot

負荷の比較

結果はほぼ変わりませんでした!!
そのため、表は省略しています。

アプリの停止は、「極力無駄を省いて軽くしたい!」といった方におすすめです。

でもきっと使わないので、停止しておいても損はないと私は思います。

その他の改善点(重要)

ここまでサーバー側での改善点を紹介しましたが、ここからはそれ以外の改善点を紹介します。

盲点になりがちですか重要なのでしっかり確認しましょう。

設置環境を見直す

以下のような環境はNGです!

  • 日光に直接当たる場所
  • 風通しの悪い場所

できるだけラズパイが暑くならないようにすることが大切です。

冷却ファン付きのケースを使うのもかなり有効です。

私は2年近くこちらのファンケースを使い続けていますが、壊れたことはないのでおすすめです。
https://amzn.to/3RGtbH7

Amazon.co.jp: Miuzei 最新Raspberry Pi 4 ケース ラスベリー パイ 4 ケース+ 冷却ファン+ヒートシンク Raspberry Pi 4 Model B対応(Raspberry Pi 4 Model B 本体含まりません) (Pi 4ケース) : パソコン・周辺機器
Amazon.co.jp: Miuzei 最新Raspberry Pi 4 ケース ラスベリー パイ 4 ケース+ 冷却ファン+ヒートシンク Raspberry Pi 4 Model B対応(Raspberry Pi 4 Model B 本体含まりません) (Pi 4ケース) : パソコン・周辺機器

有線LANを使う

有線LANは速いのはもちろんのこと、通信が安定しているという特徴があるのでおすすめです。

また、有線LANを使いたくない方は、ルーターの近くにラズパイを置くと良いです。

こちらの有線LANがおすすめです。0.5m〜10mまで長さを選べます。
https://amzn.to/3RY6M7H

Amazon.co.jp: バッファロー BUFFALO ツメの折れないLANケーブル モデム用 カテゴリ6a ストレート フラットタイプ ブラック BSLS6AFU10BK : パソコン・周辺機器
Amazon.co.jp: バッファロー BUFFALO ツメの折れないLANケーブル モデム用 カテゴリ6a ストレート フラットタイプ ブラック BSLS6AFU10BK : パソコン・周辺機器

マイクラ内での重さを減らす

マイクラが重くなる原因は主にこちらです。

  • エンティティが多すぎる
  • 初期スポーン付近にがとても発展している

エンティティが多すぎる

エンティティとは、ブロック・パーティクル以外のもののことを指します。

代表されるエンティティ

  • プレイヤー
  • モブ・動物
  • ドロップしたアイテム
  • トロッコや防具立て

エンティティは動きますし、それぞれ挙動が違うので多いとかなり重くなります。
そのため、村人増殖や大量の動物を飼うことはできるだけ控えた方が良いです。

どうしても作りたい場合は、次にも説明しますが初期スポーンから離れた位置、またはネザーに作ることをおすすめします。

初期スポーン付近がとても発展している

初期スポーン地点を中心とした23×23チャンクの範囲はスポーンチャンクと呼ばれていて、常に読み込まれる仕様になっています。(詳しくはMinecraft Wikiをご覧ください)

スポーンチャンク
スポーンチャンク(英:Spawn chunks)は、ワールドのスポーン地点周辺に存在する常に読み込まれているチャンク群である。 通常、プレイヤーの描画範囲外のチャンクは読み込みが停止される。このためこれらのチャンクにあるレッドストーン装置やトラップなどの機構は作動を停止しまう。しかしスポーンチャンクは常に読み込まれてい...

つまりワールドのどこにいてもそのチャンクは処理され続けるので、
スポーンチャンクが重い = ワールドが常に重い
ということになってしまいます。

この仕様は大きなメリットでもありますが、やりすぎには注意が必要です。

対策としては、以下のようなものがあります。

  • スポーンチャンクではないところに拠点を作る
  • 装置やトラップはネザーに作る

チャンクローダーという装置を使えば好きなチャンクを常に読み込むことができるので、気になった方は使ってみてはいかがでしょうか。
Googleで検索「Minecraft チャンクローダー」

ネザーに作る場合は岩盤の上に作るのがおすすめです。

最後に

最後にマイクラサーバーが重い原因とその解決策を載せておきます。

  • PaperMCを使う
  • サーバーの設定ファイルを編集して無駄な機能を省く
  • 余計なアプリの停止(Bluetoothなど)
  • 直射日光・風通しの悪い場所は避ける
  • 初期スポーン付近のエンティティの数を見直す

お疲れ様でした。

ご感想・質問等あればコメント欄までよろしくお願いします。

コメント