Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド

共有メモリーとセマフォーの設定

HADB をインストールする前に、共有メモリーとセマフォーを設定する必要があります。この手順は、使用しているオペレーティングシステムによって異なります。

ホストで HADB 以外のアプリケーションを実行する場合は、これらのアプリケーションが使用する共有メモリーおよびセマフォーを計算し、HADB で必要な値に追加します。各ホストで動作する HADB ノードが最大 6 つの場合は、この節で推奨している値で十分です。値を増やす必要があるのは、6 つを超える HADB ノードを動作させる場合、または追加の共有メモリーおよびセマフォーを必要とするアプリケーションがホストで動作している場合だけです。

セマフォーの数が少なすぎる場合、HADB がエラーになって次のエラーメッセージが表示されることがあります。「デバイスに空き容量がありません」。これは、データベースの起動時や実行時に発生する可能性があります。

ProcedureSolaris で共有メモリーとセマフォーを設定する

セマフォーは、グローバルなオペレーティングシステムリソースであるため、設定は、HADB だけでなく、ホストで稼働しているすべてのプロセスに依存します。Solaris では、/etc/system ファイルを編集してセマフォーを設定します。

  1. ルートとしてログインします。

  2. 共有メモリーを設定します。

    • shminfo_shmmax を設定します。この値は、ホスト上の単一共有メモリーセグメントの最大サイズを指定します。16 進数表現で、この値を HADB ホストマシンの RAM の合計サイズ (ただし 2G バイト以下) に設定します。

      たとえば、RAM が 2G バイトの場合は、/etc/system ファイルで次のように値を設定します。


      set shmsys:shminfo_shmmax=0x80000000

      注 –

      ホストマシンのメモリーを確認するには、次のコマンドを使用します。


      prtconf | grep Memory

    • Solaris 8 以前では、shminfo_shmseg (プロセスあたり接続可能な共有メモリーセグメントの最大数) を設定します。ホストあたりのノード数の 6 倍に値を設定します。ホストあたりに 6 ノード以下の場合は、次の行を /etc/system ファイルに追加します。


      set shmsys:shminfo_shmseg=36

      Solaris 9 以降では、shmsys:shminfo_shmseg は廃止されています。

    • shminfo_shmmni (システム全体の共有メモリーセグメントの最大数) を設定します。各 HADB ノードは 6 つの共有メモリーセグメントを 割り当てるため、HADB に必要な値は、ホストあたりのノード数の 6 倍以上にしてください。Solaris 9 では、ホストあたりに 6 ノード以下の場合は、デフォルト値を変更する必要はありません。

  3. セマフォーを設定します。

    /etc/system ファイルを確認して、たとえば次のようなセマフォー設定のエントリがないかどうか調べます。


    set semsys:seminfo_semmni=10
    set semsys:seminfo_semmns=60
    set semsys:seminfo_semmnu=30

    エントリが存在する場合は、次に示すように値を増やします。

    これらのエントリが /etc/system ファイルに含まれていない場合は、ファイルの最後に次のエントリを追加します。

    • seminfo_semmni (セマフォー識別子の最大数) を設定します。各 HADB ノードにはセマフォー識別子が 1 つ必要です。Solaris 9 では、ホストあたりに 6 ノード以下の場合は、デフォルト値を変更する必要はありません。次に例を示します。


      set semsys:seminfo_semmni=10
    • seminfo_semmns (システム全体のセマフォーの最大数) を設定します。各 HADB ノードにはセマフォーが 8 つ必要です。Solaris 9 の場合、またはホストあたりに 6 ノード以下の場合は、デフォルト値を変更する必要はありません。次に例を示します。


      set semsys:seminfo_semmns=60
    • seminfo_semmnu (システム中の undo 構造体の最大数) を設定します。各接続 (設定変数 NumberOfSessions、デフォルト値は 100) には undo 構造体が 1 つ必要です。ホストあたりに 6 ノード以下の場合は、600 に設定します。


      set semsys:seminfo_semmnu=600
  4. マシンをリブートします。

ProcedureLinux で共有メモリーを設定する

Linux では、共有メモリー設定を設定する必要があります。デフォルトのセマフォー設定を調整する必要はありません。

  1. ルートとしてログインします。

  2. ファイル /etc/sysctl.conf を編集します。

    Redhat Linux では、sysctl.conf を変更してカーネルパラメータを設定することもできます。

  3. kernel.shmax および kernel.shmall の値を次のように設定します。


    echo MemSize > /proc/sys/shmmax
    echo MemSize > /proc/sys/shmall

    ここで、MemSize はバイト数です。

    kernel.shmax パラメータは、共有メモリーセグメントの最大サイズをバイト単位で定義します。kernel.shmall パラメータは、システムで一度に使用できるページ内の共有メモリーの合計容量を設定します。これらの両方のパラメータの値を、マシンの物理メモリーの総量に設定します。この値は、10 進数のバイト数で指定します。

    たとえば、両方の値を 2G バイトに設定するには、次のように指定します。


    echo 2147483648 > /proc/sys/kernel/shmmax
    echo 2147483648 > /proc/sys/kernel/shmall
  4. 次のコマンドを使用してマシンを再起動します。

    sync; sync; reboot

Windows の場合の手順

Windows では、特別なシステム設定は必要ありません。ただし、既存の J2SE インストールを使用する場合は、JAVA_HOME 環境変数を J2SE がインストールされている場所に設定します。