Java メモリ設定の変更

トラフィックと処理の要件によっては、Java ベースの Private Cloud コンポーネントを実行しているノードのヒープメモリ サイズまたはクラス メタデータ サイズを変更する必要があります。

このセクションでは、Java ヒープのデフォルト メモリサイズと推奨サイズ、およびデフォルトを変更するプロセスについて説明します。このセクションでは、プロパティ ファイルを使用して他の JVM 設定を変更する方法について説明します。

デフォルトと推奨されるヒープメモリ サイズ

次の表に、Java ベースの Private Cloud コンポーネントのデフォルトの Java ヒープメモリサイズと推奨される Java ヒープメモリサイズを示します。

コンポーネント プロパティ ファイル名 デフォルト
ヒープサイズ
推奨
ヒープサイズ
ランタイム
Cassandra なし 自動設定1 自動設定1
Message Processor message-processor.properties 512 MB 3 GB ~ 6 GB2
ルーター router.properties 512 MB 512 MB
分析
Postgres サーバー postgres-server.properties 512 MB 512 MB
Qpid Server qpid-server.properties 512 MB 2 GB ~ 4 GB
管理
管理サーバー management-server.properties 512 MB 512 MB
UI ui.properties 512 MB 512 MB
OpenLDAP なし ネイティブ アプリ3 ネイティブ アプリ3
Zookeeper zookeeper.properties 2,048 MB 2,048 MB
メモ

1 Cassandra は起動時に最大ヒープサイズを動的に計算します。現時点では、合計はシステムメモリの半分で、最大 8,192 MB です。ヒープサイズの設定については、ヒープメモリ サイズを変更するをご覧ください。

2 Message Processor では、ヒープサイズを 3 GB ~ 6 GB に設定することをおすすめします。6 GB を超えるヒープサイズに増やす場合は、必ずその前にパフォーマンス テストを実施してください。

パフォーマンス テスト中にヒープ使用量が上限に近づいた場合は、上限を増やします。ヒープサイズの設定については、ヒープメモリ サイズを変更するをご覧ください。

3 すべての Private Cloud コンポーネントが Java で実装されているわけではありません。ホスト プラットフォーム上でネイティブに動作するアプリには Java ベースではないため、構成可能な Java ヒープサイズはなく、メモリ管理についてはホストシステムに依存します。

ノード上の Java ベースのコンポーネントに割り当てる合計メモリ量を判断するには、そのノードのコンポーネントごとに上記の値を追加します。たとえば、Postgres サーバーと Qpid サーバーの両方をホストしているノードでは、合計 2.5 GB ~ 4.5 GB のメモリを割り当てることをおすすめします。

必要なハードウェア(RAM など)のリストについては、インストール要件をご覧ください。

ヒープメモリ サイズを変更する

ヒープメモリ設定を変更するには、コンポーネントのプロパティ ファイルを編集します。たとえば、Message Processor の場合は /opt/apigee/customer/application/message-processor.properties ファイルを編集します。

message-processor.properties ファイルが存在しない場合、または対応する Edge コンポーネントに対応する .properties ファイルが存在しない場合は、次の例に示すように、ファイルを作成して所有権を「apigee」ユーザーに変更します。

chown apigee:apigee /opt/apigee/customer/application/message-processor.properties

コンポーネントが Message Processor などの複数のマシンにインストールされている場合は、コンポーネントをホストするすべてのマシンでプロパティ ファイルを編集する必要があります。

次の表に、ヒープサイズを変更するために編集するプロパティを示します。

プロパティ 説明
bin_setenv_min_mem

最小ヒープサイズ。デフォルトは、デフォルトと推奨のヒープメモリ サイズに記載されている値に基づいています。

この設定は Java の -Xms オプションに対応します。

bin_setenv_max_mem

最大ヒープサイズ。デフォルトは、デフォルトと推奨のヒープメモリ サイズに記載されている値に基づいています。

この設定は Java の -Xmx オプションに対応します。

bin_setenv_meta_space_size

デフォルトのクラス メタデータ サイズ。デフォルト値は bin_setenv_max_permsize の値(デフォルトは 128 MB)に設定されています。Message Processor では、トラフィックに応じてこの値を 256 MB または 512 MB に設定することをおすすめします。

この設定は Java の -XX:MetaspaceSize オプションに対応します。

ノードでヒープサイズ プロパティを設定する際は、次の例に示すように、接尾辞「m」を使用してメガバイト単位を表します。

bin_setenv_min_mem=4500m
bin_setenv_max_mem=4500m
bin_setenv_meta_space_size=1024m

プロパティ ファイルで値を設定した後、コンポーネントを再起動します。

/opt/apigee/apigee-service/bin/apigee-service component restart

次に例を示します。

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

他の JVM プロパティを変更する

上記のプロパティで制御されない Java 設定については、Edge コンポーネントに対応するプロパティ ファイルで以下を設定することもできます。

  • bin_setenv_ext_jvm_opts: 他のプロパティによって指定されない任意の Java プロパティを設定します。例:
    bin_setenv_ext_jvm_opts=-XX:MaxGCPauseMillis=500

    ただし、bin_setenv_ext_jvm_opts を使用して -Xms-Xmx-XX:MetaspaceSize を設定しないでください。これらの値は、上記のプロパティによって制御されます。

Private Cloud コンポーネントのメモリ構成に関する追加のヒントについては、Edge フォーラムのこちらの記事をご覧ください。