Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


15.6.2 SQL文実行時またはコマンド実行時にメモリが不足した場合の対処方法

SQL文実行時またはコマンド実行時に次のメッセージが出力された場合の対処方法を示します。

出力されたメッセージ
  • KFAA30930-E

  • KFAA40007-E

対処方法は,サーバ定義adb_sys_memory_limitオペランドの指定の有無によって異なります。

〈この項の構成〉

(1) サーバ定義adb_sys_memory_limitオペランドを指定している場合

HADBサーバが使用するメモリが不足しています。サーバ定義のadb_sys_memory_limitオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

  1. HADBサーバを終了する

    adbstopコマンドを実行して,HADBサーバを終了してください。

  2. サーバ定義を変更する

    サーバ定義のadb_sys_memory_limitオペランドに,次に示す計算式で求めた値以上の値を指定してください。

    計算式(単位:メガバイト)

    [図データ]

    変数の説明

    get_sizeKFAA30930-EメッセージおよびKFAA40007-Eメッセージの変数bb....bbの値(単位:バイト)

  3. HADBサーバを開始する

    adbstartコマンドを実行して,HADBサーバを開始してください。

  4. SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_memory_limitオペランドについては,「7.2.2 性能に関するオペランド(set形式)」のadb_sys_memory_limitオペランドを参照してください。

(2) サーバ定義adb_sys_memory_limitオペランドを指定していない場合

KFAA30930-EメッセージおよびKFAA40007-Eメッセージに出力された,不足しているメモリの種類を示す変数aa....aaを確認してください。aa....aaによって対策が異なります。

(a) aa....aaがPROCESSの場合

プロセス共通メモリが不足しています。サーバ定義のadb_sys_proc_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

  1. HADBサーバが使用したメモリ容量の最大値を確認する

    adbls -d memコマンドを実行してください。出力結果から,出力項目「THREAD-NO」が0の行に表示されている「MAX」の値を確認してください。

    adbls -d memコマンドについては,マニュアルHADB コマンドリファレンスadbls -d mem(メモリの使用状況の表示)を参照してください。

  2. HADBサーバを終了する

    adbstopコマンドを実行して,HADBサーバを終了してください。

  3. サーバ定義を変更する

    サーバ定義のadb_sys_proc_area_maxオペランドに,次に示す計算式で求めた値以上の値を指定してください。

    計算式(単位:メガバイト)

    [図データ]

    変数の説明

    max_size手順1.で確認した「MAX」の値(単位:バイト)

    get_size出力されたメッセージの変数bb....bbの値(単位:バイト)

  4. HADBサーバを開始する

    adbstartコマンドを実行して,HADBサーバを開始してください。

  5. SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_proc_area_maxオペランドについては,「7.2.2 性能に関するオペランド(set形式)」のadb_sys_proc_area_maxオペランドを参照してください。

(b) aa....aaがTHREADの場合

リアルスレッド固有メモリが不足しています。サーバ定義のadb_sys_rthd_area_maxオペランドの指定値を大きくしてください。対処手順を次に示します。

手順

  1. HADBサーバが使用したメモリ容量の最大値を確認する

    adbls -d memコマンドを実行してください。出力結果から,出力項目「THREAD-NO」が1以上の行に表示されている「MAX」のうち,最も大きな値を確認してください。

    adbls -d memコマンドについては,マニュアルHADB コマンドリファレンスadbls -d mem(メモリの使用状況の表示)を参照してください。

  2. HADBサーバを終了する

    adbstopコマンドを実行して,HADBサーバを終了してください。

  3. サーバ定義を変更する

    サーバ定義のadb_sys_rthd_area_maxオペランドに,次に示す計算式で求めた値以上の値を指定してください。

    計算式(単位:メガバイト)

    [図データ]

    変数の説明

    max_size手順1.で確認した最も大きな「MAX」の値(単位:バイト)

    get_size出力されたメッセージの変数bb....bbの値(単位:バイト)

  4. HADBサーバを開始する

    adbstartコマンドを実行して,HADBサーバを開始してください。

  5. SQL文またはコマンドを再実行する

メモ

サーバ定義のadb_sys_rthd_area_maxオペランドについては,「7.2.2 性能に関するオペランド(set形式)」のadb_sys_rthd_area_maxオペランドを参照してください。

(c) aa....aaがHEAPの場合

ヒープメモリが不足しています。対処手順を次に示します。

手順

  1. 不要なプロセスがないかどうかを確認してください。不要なプロセスがある場合は,そのプロセスを終了または削除してください。

  2. 手順1.を実施してもメモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • adbstartコマンドを実行して,HADBサーバを開始する

  3. 手順2.を実施してもメモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • OSを再起動する

    • adbstartコマンドを実行して,HADBサーバを開始する

    クライアントで発生した場合は,クライアントのOSを再起動してください。

  4. 手順3.を実施してもメモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • カーネルパラメタの設定を変更し,プロセスで使用できるメモリの上限を大きくする

    • OSを再起動する

    • adbstartコマンドを実行して,HADBサーバを開始する

    クライアントで発生した場合は,クライアントのカーネルパラメタの設定を変更し,プロセスで使用できるメモリの上限を大きくしてください。そのあとに,クライアントのOSを再起動してください。

  5. SQL文またはコマンドを再実行する

(d) aa....aaがSHAREの場合

共有メモリが不足しています。対処手順を次に示します。

手順

  1. 不要なプロセス,および不要な共有メモリがないかどうかを確認してください。不要なプロセスがある場合は終了してください。不要な共有メモリがある場合は削除してください。

  2. 手順1.を実施しても共有メモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • adbstartコマンドを実行して,HADBサーバを開始する

  3. 手順2.を実施しても共有メモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • OSを再起動する

    • adbstartコマンドを実行して,HADBサーバを開始する

    クライアントで発生した場合は,クライアントのOSを再起動してください。

  4. 手順3.を実施しても共有メモリが不足する場合は,次の対処をしてください。

    • adbstopコマンドを実行して,HADBサーバを終了する

    • カーネルパラメタの設定を変更し,共有メモリの上限を大きくする

      また,HADBサーバの共有メモリにHugePagesを適用している場合,カーネルパラメタがHugePagesを使用できる設定になっていることを確認してください。詳細については,「6.2 カーネルパラメタの見積もり」を参照してください。

    • OSを再起動する

    • adbstartコマンドを実行して,HADBサーバを開始する

    クライアントで発生した場合は,クライアントの共有メモリの上限を大きくしてください。そのあとに,クライアントのOSを再起動してください。

  5. SQL文またはコマンドを再実行する