利用可能なメモリを増やして out of memory エラーを修正する方法

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

この記事はアトラシアンのサーバー製品にのみ適用されます。クラウドとサーバー製品の違いについてはこちらをご確認ください。

目的

Jira、Crowd、および Confluence のような Java アプリケーションは、オペレーティング システムで直接実行されるのではなく、"Java 仮想マシン" (JVM) 内で実行されます。開始されると、Java 仮想マシンには一定量のメモリが割り当てられ、それによって Confluence などのアプリケーションが利用できるようになります。既定では、サーバーで実際に使用可能なメモリ容量にかかわらず、Java 仮想マシンには 64 MB のメモリが割り当てられます。64 MB はほとんどの Confluence インストールでは不適切であるため、これを増加させる必要があります。

診断

ここをクリックして展開...

エラー メッセージ タイプの確認

どのようなタイプの OutOfMemory エラーが発生しているかを特定するため、atlassian-confluence.log を確認します。次の 3 種類のメッセージが一般的です。

  1. ヒープ領域
  2. PermGen スペース
  3. GC オーバーヘッド
tip/resting Created with Sketch.

このドキュメントでは、PermGen およびヒープ領域エラーに対応するためにメモリを増加させる方法について説明します。それぞれの問題の根本原因に対応するための方法については、上記のリンクをご利用ください。

GC オーバーヘッドについては、「'java.lang.OutOfMemoryError GC overhead limit exceeded' により Confluence がクラッシュする」をご参照ください。

Confluence の利用パターンの把握

Confluence で Confluence Administration > System Information, に移動し、ピーク利用時間のメモリ グラフを確認します。

このサーバーには最大 650 Mb、最小 256 m が割り当てられています。ここで最小値を確認できます。設定が反映されているかを確認したい場合、この画面を利用できます。

利用可能なシステム メモリの決定

Windows の場合

プログラムの終了ダイアログ (ctrl + alt + delete) でパフォーマンス タブを選択します。

利用可能と表示されている量が、Confluence に割り当て可能なメモリ量 (キロバイト単位) です。このサーバーでは約 214 Mb を割り当てることができます。

Linux の場合

次のコマンドを実行します。

cat /proc/meminfo 

これによってメモリの利用状況を確認します。

サーバーで利用可能な容量を超えて -Xmx を設定すると、物理メモリ不足から OutOfMemoryErrors が発生する可能性があります。これが発生した場合、スワップ容量が使用され、パフォーマンスが大幅に低下します。

ガイダンス

Confluence のスタンドアロン版で用意されている既定値はほとんどのインストールで有効です。詳細については「アプリケーション サーバーのメモリ設定の管理」および「サーバー ハードウェア要件ガイド」をご参照ください。

ソリューション

ステップ 1: 利用可能なメモリ量を増加させる

割り当てるべきメモリ量は、ご利用のサーバー セットアップ、ユーザー ベースの大きさ、およびユーザーの操作内容によって大幅に変わるため、具体的な推奨値は提示していません。GC 停止や OutOfMemory エラーが発生しない最適な値をお客様側で判断していただく必要があります。

ご参考までに、メモリ (ヒープ) 割り当てを変えるためにもっともよく使用される 3 つのパラメータは次のものです。

  • Xms - ヒープの最小サイズ
  • Xmx - ヒープの最大サイズ
  • -XX:MaxPermSize - PermGen の最大サイズ (これは Java 8 以降では使用されません)

    使用すべきメモリ量の推奨事項を確認したい場合、ハードウェア仕様の例をいくつか説明しているこちらのページをご参照ください。

メモリ設定を増加させる場合、次のような一般的なガイドラインに従います。

  • OutOfMemory エラーが発生しなくなるまで、Xmx を少しずつ (例: 一度に 512 mb) 増やします。これは、サーバーで適切に Garbage Collect 可能な許容量を超えてヒープを増加させると、パフォーマンスやフリーズなどの別の問題が発生する場合があるためです。
  • エラーが " java . lang . OutOfMemoryError : PermGen space" の場合、-XX:MaxPermSize パラメータをエラーが発生しなくなるまで 256 mb ずつ増加させます。

  • エラーが PermGen を参照していない場合、これを増加させる必要はありません。PermGen はクラスを保管するために使用され、一般にサイズは静的であり、Java 8 で削除されました。詳細についてはこちらをご参照ください。
  • Xms と Xmx を同じ値に設定することを検討します。これにより、各コレクションでヒープを小さくするためのリサイズを試行することがなくなるため、GC が発生するまでの時間を縮めることができます。

    tip/resting Created with Sketch.

    詳細情報については「ガベージ コレクション (GC) チューニング ガイド」をご参照ください。

Linux


ここをクリックして展開...

Linux インストールでヒープまたは PermGen 領域のメモリを増やす方法

  1. Confluence をシャットダウンします。
  2. <confluence-install>/bin (スタンドアロン) または <Tomcat-home>/bin (EAR-WAR インストレーション) で setenv.sh を開きます (EAR/WAR バージョンではこのファイルを作成できます)。
  3. 次のセクションを見つけます。
  • CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS" (Confluence 5.8 以降)
  • CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC" (Confluence 5.6 または 5.7)
  • JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m (過去のバージョン)
  1. 上述の「診断」を参照し、適切な値を入力します。Xmx が最大値、Xms が最小値、MaxPermSize が PermGen です。
  2. Confluence を起動します。


Windows (.batファイルから起動)


ここをクリックして展開...

Windows で Confluence をサービスとして起動している場合、この手順は使用せずに後述の「Windows サービス」セクションをご参照ください。

この手順は、Confluence をバッチ ファイルで起動している場合にのみご利用ください。Confluence をサービスとして起動している場合、バッチ ファイルは使用されません。

Windowsインストールで .bat ファイルから起動する際にシステム プロパティを設定する方法

  1. Confluence をシャットダウンします。
  2. <confluence-install>/bin (スタンドアロン) または <Tomcat-home>/bin (EAR-WAR インストレーション) で setenv.bat を開きます。
  3. 次のセクションを見つけます。
    • CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:+UseG1GC $CATALINA_OPTS" (Confluence 5.8 以降)
    • CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseG1GC" (Confluence 5.6 または 5.7)
    • JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m (過去のバージョン)
  4. 上述の 「診断」を参照し、適切な値を入力します。Xmx が最大値、Xms が最小値、MaxPermSize が PermGen です。
  5. Confluence を起動します。


Windows サービス


ここをクリックして展開...

Confluence を Windows サービスとして自動的に起動している場合、コマンド ライン経由または Windows レジストリからシステム プロパティを構成できます。

Windows サービスのプロパティをコマンド ラインから設定する

Windows サービスのプロパティをコマンド ラインから設定する

  1. Control Panel > Administrative Tools > Services で、Windows にインストールされている Confluence サービスの名前を特定します。

    (info) 上述の例では、SERVICENAMEJIRA030908110721 です (これは Jira のスクリーンショットですが Confluence にも同様に適用できます)。
  2. 「ファイルを指定して実行」で'cmd' を入力してエンターキーを押し、コマンド ウィンドウを開きます。
  3. Confluence インスタンスの bin ディレクトリか、Confluence の EAR/WAR を実行している場合は Tomcat インストレーションの bin ディレクトリに cd します。
  4. 次のコマンドを実行します (tomcat8 の場合。以前のバージョンの場合は適宜変更します)。

    tomcat8w //ES//<Your_Service_Name>
    

    .
    (info) Confluence 5.5 未満の場合、tomcat 8w ではなく tomcat6w //ES//JIRA030908110721 になります (これは Jira のスクリーンショットですが、Confluence にも同様に適用されます)。

  5. Java タブをクリックして、現在のスタートアップ オプションの一覧を表示します。
  6. ここでメモリの最大割り当て量を設定します。
  7. また、必要に応じて java オプション セクションに -XX:MaxPermSize=512m を追加します。 

Windows レジストリで Windows サービスのプロパティを設定する

Windows の一部のバージョンには、Java 変数をサービスに追加するオプションがありません。この場合、レジストリ内のオプション一覧を表示してプロパティを追加する必要があります。

Windows サービスのプロパティを Windows レジストリで設定する方法

  1. Start >> Run に移動して ""regedit32.exe" を実行します。
  2. サービス エントリを見つけます:
    32 ビット: HKEY_LOCAL_MACHINE >> SOFTWARE >> Apache Software Foundation >> Procrun 2.0 >> Confluence
    64 ビット: HKEY_LOCAL_MACHINE >> SOFTWARE >> Wow6432Node >> Apache Software Foundation >> Procrun 2.0 >> Confluence
  3. 既存のプロパティを変更する (特に Xmx メモリを増やす) には、適切な値をダブルクリックします。
  4. 追加のプロパティを変更するには、オプションをダブルクリックします。注: 1 行に 1 つの引数を追加するようにします。
  5. ここでメモリ割り当てを変更します (-XX:MaxPermSize=512m)。


ステップ2: 設定の確認

適用されている設定を確認するには、「システム情報の表示」を確認します。"Java Runtime Arguments" というセクションが表示されます。

Xmx (最大) および Xms (最小) 設定を探します。


代替方法として、Linux で次のコマンドを実行します。

ps -aux | grep java

これによって環境パラメータを確認します。

最終更新日 2018 年 11 月 12 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.