6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

マインクラフトのマルチサーバーで使用するメモリ使用量を変更する

Posted at

マインクラフトのマルチサーバーをさくらVPSで運営しているが、
日に日にメモリ使用量が増えてきている。

$ ps axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1000     31055  0.0  0.0  22016   144 ?        Ss    3月21   0:00 SCREEN -h 102
1000     31056  7.1 76.6 4620660 779372 pts/0  Ssl+  3月21 618:36 java -Xmx2048

779,372 KB、このままでは契約の1GBになってメモリ不足になってしまう。

マインクラフトサーバーのメモリ指定

Minecraftサーバーに割り当て可能なメモリー量を増やす

どうやら起動スクリプトの指定で使用するメモリ量を変更できるらしい。

/etc/init.d/minecraft
 MAXHEAP=2048
 MINHEAP=1024
 HISTORY=1024
 CPU_COUNT=1
 INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
 -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
 -jar $SERVICE $OPTIONS"

MAXHEAP(最大)が2048、MINHEAP(最小)が1024。オラクルのドキュメントには単位付けないとバイト指定とあるが、よく見ると変数展開の後(-Xmx${MAXHEAP}M)にMとあるのでMB単位となる。

MAXHEAPとMINHEAPとは何か?

チューニングのためのJava VM講座(後編):ガベージコレクタの仕組みを理解する (2/2) - @IT

-Xms、-Xmx(-Xms≦-Xmx)に異なる値を設定すると、ヒープサイズは起動時には-Xmsで指定された大きさですが、状況によってJVMがヒープが足りないと判断した場合は最大-Xmxで指定した大きさまで拡大します。これらの値を同じにするとヒープサイズ調整のオーバーヘッドがなくなりパフォーマンスが上がる場合もあります。

Java仮想マシンのガベージコレクションを行う値らしい。
通常はMINHEAPまで溜まったらガベージコレクションが実行されてメモリを回収するが、場合によってはMAXHEAPということのようだ。

メモリ使用量を設定

/etc/init.d/minecraft
 #MAXHEAP=2048
 MAXHEAP=640
 #MINHEAP=1024
 MINHEAP=512
 HISTORY=1024
 CPU_COUNT=1
 INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \
 -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \
 -jar $SERVICE $OPTIONS"

どうせ数人しかいないので640MB、512MBに制限することにした。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?