AWSのEC2(RHEL 7.3)でWildFly 10.1.0のJVMヒープサイズを変更する
目次
概要
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 |
vCPU | 1 |
メモリ | 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
※以下、該当箇所のみ変更※ # # 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
以上で設定は完了です。