Pivotal Knowledge Base

フォローする

Out of Memory(OOM)エラーの見分け方

環境

製品 バージョン
GPDB 全てのバージョン

概要

GPDB で out of memory(以下、OOM)エラーが発生する要因はいくつか考えられる。GPDB は、ある操作から OOM に至った理由の詳細を表す有意義なエラーコードとメッセージを出力しようと試みる。これらのエラーは、主に 2 つのカテゴリーに分類され、関連するエラーコードによって認識することができる。各カテゴリーで、OOM エラーを発生させたいくつかの理由が考えられる。

以下は、考えられ得る OOM エラーの例である。なお、エラーコードは 53400、あるいは 53200 となる。

  • "ERROR","53400","Out of memory (seg13 slice13 sdw1-1:40001 pid=10183)","VM Protect failed to allocate 8388608 bytes, 6 MB available"

  • "ERROR","53200","Out of memory. Failed on request of size 156 bytes. (context 'CacheMemoryContext') (aset.c:840)"

メモリーエラーコード 53400

これらのエラーは、gp_vmem_protect_limit 値を元に、クエリー実行時にメモリ割り当てに失敗し、当該クエリーが異常終了した場合に発生する。

  1. "VM Protect failed to allocate %d bytes,%d MB available": This happens when the request results in exceeding the gp_vmem_protect_limit.

  2. "Per-query VM protect limit reached: current limit is %d kB, requested %d bytes, available %d MB": As shown above the following limit exceeded: gp_vmem_protect_limit_per_query.

  3. "VM protect failed to allocate %d bytes from system, VM Protect %d MB available": This is not a result of reaching the gp_vmem_protect_limit rather, the error is due to the OS not having enough user memory available.

  4. "Failed to allocate memory under virtual memory protection" "Error %d, errno %d, %s": This error is due to a memory allocation problem that is not covered by the three cases above.

解決策

エラーコード 53400 への考えられ得る解決策

  1. このエラーにおける最も一般的な原因は以下である。
    a) リソースキューの設定ミスによるクエリーの並列実行多重度過多か、メモリーの要求過多が発生している場合。

    あるいは…

    b) クエリー計画のサイズが巨大で多くのメモリーを消費している場合。

    前者の場合、リソースキューの設定を見直すことになる。

    後者の巨大なクエリー計画サイズに関連する問題は、GUC の gp_max_plan_size の設定を検討することになる。詳細については、以下のドキュメントを参照のこと。
    http://gpdb.docs.pivotal.io/4360/guc_config-gp_max_plan_size.html

    注意: b) は、GUC の gp_vmem_limit_per_query を設定している場合のみ発生する。繰り返しとなるが、過度に巨大なクエリー計画によって gp_vmem_limit_per_query 値の制限に達したものと考えられる。

  2. もしも、OS が OOM をレポートしている場合は、以下が考えられる。 
    a) サーバーに対して過度なメモリ要求を行うような設定ミスをしている(すなわち、gp_vmem_protect_limit 値がセグメント数に対して大き過ぎる)。
     
    あるいは…

    b) 他のプロセスがシステムメモリーを消費している。原因の究明が難しい場合は、Pivotal Support に問い合わせされたい。

    注意: もし、2. の事象が発生した場合は、サポートチケットを登録されたい。

エラーコード 53200

このエラーは考えられる得る限り非常に多くの場合の OOM 問題に対して出力される。それらは全て、ポストマスタープロセスが OS から直接メモリ割り当てができなかった場合に起因する。詳細な原因については、そのときの状況と出力されたエラーメッセージ内容に依存する。

追加情報

本件についてさらなる支援が必要な場合は、Pivotal Support に問い合わせされたい。

コメント

Powered by Zendesk