アプリケーションサーバのヒープサイズを変更してみよう

2024年3月23日テクニカルメモ

バージョン9.0.3

アプリケーションサーバのヒープサイズの設定とは

WebFOCUSの構成としてApache TomcatなどJavaアプリケーションサーバを使用いたします。Javaアプリケーションサーバであるため利用可能なメモリは、ヒープと呼ばれるJVM上のメモリ空間を使用し、メモリ空間についてはヒープサイズの設定で上限値が設定されております。

上限値があるため大量データを扱う場合などに設定の上限を超えるメモリの使用でメモリが不足しアプリケーションサーバが稼働不可となる場合があります。

そのため、アプリケーションの利用用途に応じて、アプリケーションサーバのヒープサイズを設定する必要があります。

WebFOCUSでは、 Apache Tomcatが同梱されています。そのため、本ページは Apache Tomcatの内容に基づき、記載します。

参照されなくなったオブジェクトは、 JVM上のメモリ空間 からGC(ガベージコレクション)によりメモリ上から開放されます。そのため、ヒープサイズの設定はガベージコレクション(GC)の実行頻度を決定するため、パフォーマンスにも影響します。

関連ログ

Tomcatログ(Drive:\ibi\tomcat\logs)

  • catalina.out
  • catalina.YYYY-MM-DD.log
  • commons-daemon.YYYY-MM-DD.log(Windowsの場合)
  • tomcat8-stdout.YYYY-MM-DD.log(Windowsの場合)
  • tomcat8-stderr.YYYY-MM-DD.log(Windowsの場合)

Caused by: java.lang.OutOfMemoryError: Java heap space
Exception in thread "http-nio-8080-exec-80" java.lang.OutOfMemoryError:

OutOfMemoryError が記録されている場合にはメモリの枯渇により、Tomcatの稼働が不可となっている場合がございます。

よくある発生事象

  • 大量データの処置に伴うメモリ枯渇
  • ラベルの重複などにより、無限ループなど発生している場合

対応・設定方法

Apache Tomcatのヒープサイズの最大値を変更することにより、 「OutOfMemoryError」(メモリ不足)を解消することができます。しかし、同時間帯のリクエスト集中や処理内容によっては、同エラーが再度発生する可能性もあります。アプリケーションの運用状況に応じてヒープサイズの最大値を増加していただく必要があります。

※ハードウェアに搭載された物理メモリサイズの空きメモリ量の範囲内となります。

確認・設定方法(Windowsの場合)

1.Windows の[スタート メニュー]より[すべてのプログラム]- [Information Builders]-[Tomcat]を選択後、「Tomcat 構成 ユーティリティ」をダブルクリックして開きます。

2.[Apache Tomcat Properties]ウィンドウが起動しますので、[Java]タブを開きます。

3.[Maximum memory pool]に最大ヒープサイズをメガバイト単位で入力します。

2048MBに設定する場合、「2048」

4.[OK]をクリックします。

5.「Apache Tomcat」サービスを再起動します。

※サービス再起動が必要ですのでご注意ください。

確認・設定方法 (Linux の場合 )

1.Tomcatを停止します。

2.[catalina.sh]のバックアップを取得します。
<格納場所> /ibi/tomcat/bin

3.[catalina.sh]内の[JAVA_OPTS]のパラメータを編集し、保存します。

<該当箇所>

JAVA_OPTS="-Xms1024m -Xmx2048m

-Xms:ヒープ領域の初期サイズ
-Xmx:ヒープ領域の最大サイズ
4.Tomcatを再起動します。

※Tomcatの再起動が必要ですのでご注意ください。