OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

AWSのEC2(RHEL 7.3)でWildFly 10.1.0のJVMヒープサイズを変更する

カテゴリ:OSSセットアップ | ソフトウェア:WildFly | タグ:
最終更新日:2021/01/04 | 公開日:2017/09/15

目次

概要

 WildFly 10.1.0のヒープサイズとメタスペースサイズの最大値を変更します。 AWSのEC2でt2.microのインスタンスを利用していましたが、WildFly 10.1.0の初期設定では ヒープサイズの最大値が512MB、メタスペースの最大値が256MBとなっており、 メモリを1GBしか搭載していないt2.microでは起動しただけでメモリの約8割を使用してしまいます。 今回稼働させたいアプリは規模が小さいため、ヒープサイズを縮小して対応しました。 なお、逆にヒープサイズを拡大したいときも設定する箇所は同じです。

構成

想定環境

 AWS(Amazon Web Services)のEC2上にインストール済みのWildFly 10.1.0の環境でJVMのヒープサイズを変更しました。 参考までに、サーバのスペックは以下のとおりです。

■サーバスペック
項目内容
インスタンスタイプt2.micro
vCPU1
メモリ1GB
ディスクSSD 10GiB
リージョン日本

 また、インストール済みのWildFlyの主な設定は以下の通りです。

■主な設定内容
WildFlyインストールパス/opt/wildfly-10.1.0.Final/

サーバ構成

OSバージョン

Red Hat Enterprise Linux 7.3 x86_64

ソフトウェア・パッケージ一覧

  • jdk1.8.0_131-1.8.0_131-fcs.x86_64.rpm
  • wildfly-10.1.0.Final.tar.gz

環境構築

設定

Wildflyの設定ファイルにヒープサイズを設定

 WildFlyが起動時に読み込む設定ファイル(standalone.conf)に、JVMの起動オプションを設定する行があります。 初期状態でヒープサイズの初期値(-Xms)と最大値(-Xmx)が設定されていますので、最大値を変更します。 なお、今回はヒープサイズだけでなくメタスペースサイズの最大値も変更します。

$ sudo su -
Last login: Wed Sep 13 01:00:54 EDT 2017 on pts/2
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
# cd /opt/wildfly-10.1.0.Final/bin/
# vi standalone.conf
ファイル名:/opt/wildfly-10.1.0.Final/bin/standalone.conf
※以下、該当箇所のみ変更※
#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
else
   echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi
   ↓変更
#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms64m -Xmx256m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=128m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
else
   echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi

Systemdでwildflyサービスを再起動

 Systemdでwildflyサービスを再起動します。 設定が間違っていると起動しないことがありますので、起動していることを確認します。 Systemdのステータスで「active (running)」と表示されていれば正常に起動しています。

# systemctl restart wildfly
# systemctl status wildfly
● wildfly.service - The WildFly Application Server
   Loaded: loaded (/etc/systemd/system/wildfly.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2017-09-13 10:55:57 EDT; 8s ago ←「active (running)」と表示されていること
 Main PID: 2486 (launch.sh)
   CGroup: /system.slice/wildfly.service
           tq2486 /bin/sh /opt/wildfly/bin/launch.sh standalone standalone.xml 0.0.0.0
           tq2487 /bin/sh /opt/wildfly/bin/standalone.sh -c standalone.xml -b 0.0.0.0
           mq2543 java -D[Standalone] -server -Xms64m -Xmx256m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=128m -Djava...

Sep 13 10:55:57 ip-172-31-21-121.ap-northeast-1.compute.internal systemd[1]: Started The WildFly Application Server.
Sep 13 10:55:57 ip-172-31-21-121.ap-northeast-1.compute.internal systemd[1]: Starting The WildFly Application Server...
Hint: Some lines were ellipsized, use -l to show in full.

JVMの起動オプションを確認

 起動したJVM(javaプロセス)のオプションを確認し、ヒープサイズとメタスペースサイズの変更が反映されていることを確認します。

# ps -ef | grep java
wildfly   2543  2487 98 10:55 ?        00:00:26 java -D[Standalone] -server -Xms64m -Xmx256m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=128m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/opt/wildfly/standalone/log/server.log -Dlogging.configuration=file:/opt/wildfly/standalone/configuration/logging.properties -jar /opt/wildfly/jboss-modules.jar -mp /opt/wildfly/modules org.jboss.as.standalone -Djboss.home.dir=/opt/wildfly -Djboss.server.base.dir=/opt/wildfly/standalone -c standalone.xml -b 0.0.0.0
root      2650  2239  0 10:56 pts/0    00:00:00 grep --color=auto java

 以上で設定は完了です。