Java メモリ設定の変更

トラフィック要件や処理要件に応じて、Java ベースの Private Cloud コンポーネントを実行しているノードのヒープメモリ サイズまたはクラス メタデータ サイズを変更しなければならない場合があります。

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

デフォルトおよび推奨のヒープメモリ サイズ

次の表に、Java ベースの Private Cloud コンポーネントに割り当てられる 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 サーバー 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 コンポーネント用の追加の JVM フラグまたは値を渡すこともできます。*.properties ファイルは Bash によって読み取られます。リテラル文字を保持するには '(単一引用符)で囲み、シェル拡張が必要な場合は "(二重引用符)で囲む必要があります。

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

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

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