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

お困りですか?

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

コミュニティに質問

This article only applies to the Atlassian server platform. Learn more about the differences between cloud and server.

目的

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 の利用パターンの把握

In Confluence, go to Confluence Administration > System Information, and look at the memory graph during times of peak usage:

このサーバーには最大 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. Identify the name of the service that Confluence is installed as in Windows ( Control Panel > Administrative Tools > Services ):

    (info) In the above example, the SERVICENAME is: JIRA030908110721 (this is a JIRA screenshot, but the same applies to Confluence)
  2. 「ファイルを指定して実行」で'cmd' を入力してエンターキーを押し、コマンド ウィンドウを開きます。
  3. Confluence インスタンスの bin ディレクトリか、Confluence の EAR/WAR を実行している場合は Tomcat インストレーションの bin ディレクトリに cd します。
  4. 次のコマンドを実行します (tomcat8 の場合。以前のバージョンの場合は適宜変更します)。

    tomcat8w //ES//<Your_Service_Name>
    

    .
    (info) If you are under confluence 5.5, it would be tomcat6w //ES//JIRA030908110721 instead of tomcat8w (this is a JIRA screenshot, but the same applies to Confluence)

  5. Click on the Java tab to see the list of current start-up options:
  6. ここでメモリの最大割り当て量を設定します。
  7. また、必要に応じて java オプション セクションに -XX:MaxPermSize=512m を追加します。 

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

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

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

  1. Go to Start >> Run, and run "regedit32.exe"
  2. Find the Services entry:
    32-bit: HKEY_LOCAL_MACHINE >> SOFTWARE >> Apache Software Foundation >> Procrun 2.0 >> Confluence
    64-bit: HKEY_LOCAL_MACHINE >> SOFTWARE >> Wow6432Node >> Apache Software Foundation >> Procrun 2.0 >> Confluence
  3. 既存のプロパティを変更する (特に Xmx メモリを増やす) には、適切な値をダブルクリックします。
  4. To change additional properties, double-click options. Note: Make sure to add only one argument per line.
  5. ここでメモリ割り当てを変更します (-XX:MaxPermSize=512m)。


ステップ2: 設定の確認

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

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


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

ps -aux | grep java

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

最終更新日 2018 年 11 月 12 日

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

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