4 Oracle Exalogic Elastic Cloud環境のWebLogic ServerのCooperative Memory Management (CMM)

WebLogic Server は、Cooperative Memory Management (CMM)を使用して、WebLogic Serverリソースによるメモリーの有効活用を促進します。

この章の内容は次のとおりです。

Cooperative Memory Management (CMM)について

Cooperative Memory Management (CMM)は、WebLogic Serverリソースでマシン全体のメモリー使用率に基づいてメモリー使用率を調整できるようにすることにより、メモリーの有効活用を促進するExalogic Elastic Cloud環境のWebLogic機能です。

CMMを有効にすると、オペレーティング・システムのメモリー使用量が監視され、相対的な不足レベルがメモリー不足エージェントによってパブリッシュされます。パブリッシュされる不足レベルは、0(不足なし)から10(最高の不足レベル(重大なオーバーロード))の間の範囲です。メモリー不足リスナーを登録したWebLogic Serverリソースは、INFOメッセージをサーバー・ログに書き込み、使用可能なメモリーの使用率を上下するためにサーバー・リソースを適切に管理して、メモリー不足レベルの変更に対応します。

高いまたは増加しているメモリー不足条件では、メモリー不足エージェントに登録されたリソースはサーバーのオーバーロードを防ぐためにメモリー使用率を下げる次のような方法を実装します。

  • キャッシュのサイズの削減

  • 圧縮可能なメモリー内データの圧縮

  • 新しい処理の拒否

  • 一時的にパフォーマンスを低下させてシステムのスラッシングを削減し、正常なサーバー・リカバリを実装します。

エージェントによって測定されたメモリー不足が変更されるまで、指定された不足レベルでサーバーが実行するアクションが有効なままです。たとえば、データ・ソース・メモリー不足リスナーが4の不足を受け取った場合、使用可能な文キャッシュ・サイズが60パーセントに減ります。文キャッシュの実際の使用量を75パーセントに改善するには、メモリー不足エージェントによって報告されたメモリー不足レベルを2に変更する必要があります。表4-1を参照してください。

環境でのCMMの使用

CMMは、Exalogic Elastic Cloud環境でのみ使用可能です。『ライセンス情報』Exalogic Elastic Cloudソフトウェアに関する項を参照してください。

環境でCMMを有効化するには:

  • 存在しない場合、次を環境のWebLogicサーバーを起動するために使用される${DOMAIN_HOME}/bin/startWebLogic.shスクリプトに追加します。次に例を示します。

    . . .
    if [ -f ${WL_HOME}/server/bin/saveMemory.sh ] ; then
          . ${WL_HOME}/server/bin/saveMemory.sh
    fi
    . . .
    

    次を含む${WL_HOME}/server/bin/にあるsaveMemory.shファイルを作成します。

    #!/bin/sh
    # The following flag is used to enable CMM
    export SAVE_MEMORY=true
  • 環境のすべてのサーバーがExalogicの最適化を使用していることを確認します。「Exalogicの最適化の有効化」を参照してください

  • 環境内のすべてのサーバーを再起動して、変更を有効にします。

WebLogicデータ・ソースのCMM

文キャッシュ・サイズと接続プールの縮小に対する構成可能な調整を行って、メモリー不足イベントに対応するようWebLogic Serverデータ・ソースを構成できます。

文キャッシュ・サイズのメモリー管理

ゼロ以外のメモリー不足状態の変更を受け取った場合、メモリー不足レベルとキャッシュ・サイズの割合の構成されたマッピングに従ってすべてのデプロイされたデータソースに対して準備された文キャッシュが調整されます。デフォルトでは、WebLogicデータソースには、プールされたJDBC接続ごとに10の文キャッシュ・サイズが設定されます。

ノート:

キャッシュ・サイズを0(ゼロ)に設定して文キャッシュを無効化しているか、Oracle JDBCドライバ文キャッシュを使用しているデータソース構成は、メモリー不足イベントの影響を受けません。

次の表の説明に従って、キャッシュ・サイズの重みに対するデフォルトのメモリー不足レベルが段階的に設定されます。

表4-1 デフォルトのメモリー不足キャッシュ・サイズの重み

レベル キャッシュ・サイズ(%)

0

100

1

90

2

80

3

70

4

60

5

50

6

40

7

30

8

20

9

10

10

0

次のJavaシステム・プロパティを設定して、デフォルトの文キャッシュの重みをサーバー開始時間に変更できます。

-Dweblogic.jdbc.cmm.statementCacheWeights=weights

weightsは、形式level=percent reductionlevel=percent reduction...の1つ以上の名前/値ペアです。

この表記法を使用する場合、デフォルトの重みは次のとおりです。

1=10,2=10,3=10,4=10,5=10,6=10,7=10,8=10,9=10,10=10

パーセンテージが累積されるため、合計を100以下にする必要があります。各レベルのパーセンテージの値は、構成されたキャッシュ・サイズを減らす割合を示します。

次の例は、サーバーが次のシステム・プロパティを使用して起動した場合の様々なメモリー不足レベルに対応する文キャッシュ・サイズを示します。

-Dweblogic.jdbc.cmm.statementCacheWeights=2=20,4=20,6=20,8=20,10=20

表4-2 メモリー不足キャシュ・サイズの重みの例

レベル キャッシュ・サイズ(%)

0

100

1

100

2

80

3

80

4

60

5

60

6

40

7

40

8

20

9

20

10

0

データ・ソースを縮小するメモリー管理

不足レベルがプール縮小しきい値(デフォルトは8)を超えているメモリー不足レベルを受け取った場合、WebLogic Serverはすべてのデプロイされたデータソースに対して縮小操作を発行します。縮小操作アクションは、メモリー不足レベルがしきい値を超えるメモリー不足レベル・イベントごとに開始される1回かぎりのイベントです。

次のJavaシステム・プロパティを設定して、デフォルトの縮小しきい値をサーバー開始時間に変更できます。

-Dweblogic.jdbc.cmm.shrinkThreshold=value

valueは0から10の間の整数です。