none
2017 Express "insufficient system memory"エラーが発生 RRS feed

  • 質問

  • 【概要】
    SQL Server 2017 のExpressエディションを使用しておりますが、以下のようなエラーが発生しており原因を調査しております。
    "Failed allocate pages: FAIL_PAGE_ALLOCATION 1"
    "Error: 701, Severity: 17, State: 123."
    "There is insufficient system memory in resource pool 'internal' to run this query"

    【SQL Server の利用状況】
    他システムからSQL ServerにETLツールを用いて定期的にデータ連携をしており、SQL Serverにデータ追加されております。
    また、日次で深夜に
    SQL Serverのバックアップを行っております。
    SQL Serverに蓄積されたデータは、他BI製品が随時参照しております。

    【事象】
    上記の利用状況の中、起動して5日後の夕方に上記エラーが発生し、SQLServerが停止。
    そのため再起動を行った。再起動当日は、正常に上記のシステム構成で稼働している(質問時は再起動から1日しか経過していない)。
    あるテーブルについては、mdfのデータ量がエラー発生時は9.94G、ldfは36Gと
    逼迫していた(Expressだとmdfは10G制限の認識)。

    【その他】
    メモリ不足とのことで、他連携している製品のエラー発生時の稼働状況を確認したが
    特にメモリによるエラーなどは発生していない。
    上記のシステム構成で関係している製品のメモリーは確認できたが
    その他、OS全体でエラー発生当時のメモリー使用状況までは確認できていない(当時のメモリー状況をログとして保持していない)。

    【回答いただきたい内容】
    上記において、メモリー不足として考えられるような点をご教示いただけないでしょうか。
    それをもとに継続調査をしたく。
    情報少ない中申し訳ございませんが、よろしくお願いいたします。または、そもそも冒頭のエラーメッセージで、メモリ不足以外に事象の原因となることがあれば
    合わせて回答いただけると助かります。

    2021年3月15日 11:18

回答

  • Error 701 : FAIL_PAGE_ALLOCATION 1 であるので、1ページ (8KB) のメモリのアロケーション (1ページなので一般的にデータキャッシュなど) に失敗している状況です。
    エラー 701 が発生した時間帯、SQL Server エラーログに DBCC MEMORYSTATUS の情報が出力されるため、そちらの情報があれば、もう少し詳細な内容を確認できるかもしれません。
    エラー 701 が発生する要因としては、SQL Server プロセスに対して大量の処理が行われるなどの要因により、SQL Server プロセスで必要なメモリが一時的に不足した、SQL Server プロセス以外のプロセスで多くのメモリが消費されたことに起因し、SQL Server プロセスで利用可能なメモリが一時的に不足したなどが考えられるかと。
    後者の場合、min server memory を設定することで、SQL Server プロセスがOS全体で利用可能なメモリが不足していることを検知したとしても、min server memory に設定した値までしかメモリを解放しなくなり、SQL Server プロセスで最低限利用可能なメモリを確保できることで、メモリ不足が発生する現象を軽減できることが期待できます。

    前者の場合は、どのクエリでメモリが消費されたのかなどを拡張イベント、サーバートレースなどで特定しチューニング、もしくは、一度に処理される量を減らすなどの対策が必要になるかと思います。

    2021年3月16日 1:13

すべての返信

  • Error 701 : FAIL_PAGE_ALLOCATION 1 であるので、1ページ (8KB) のメモリのアロケーション (1ページなので一般的にデータキャッシュなど) に失敗している状況です。
    エラー 701 が発生した時間帯、SQL Server エラーログに DBCC MEMORYSTATUS の情報が出力されるため、そちらの情報があれば、もう少し詳細な内容を確認できるかもしれません。
    エラー 701 が発生する要因としては、SQL Server プロセスに対して大量の処理が行われるなどの要因により、SQL Server プロセスで必要なメモリが一時的に不足した、SQL Server プロセス以外のプロセスで多くのメモリが消費されたことに起因し、SQL Server プロセスで利用可能なメモリが一時的に不足したなどが考えられるかと。
    後者の場合、min server memory を設定することで、SQL Server プロセスがOS全体で利用可能なメモリが不足していることを検知したとしても、min server memory に設定した値までしかメモリを解放しなくなり、SQL Server プロセスで最低限利用可能なメモリを確保できることで、メモリ不足が発生する現象を軽減できることが期待できます。

    前者の場合は、どのクエリでメモリが消費されたのかなどを拡張イベント、サーバートレースなどで特定しチューニング、もしくは、一度に処理される量を減らすなどの対策が必要になるかと思います。

    2021年3月16日 1:13
  • ishidajjj14120さん、こんにちは。フォーラムオペレーターのKumoです。 
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご質問いただいた件ですが、その後いかがでしょうか。
    NOBTAさんから寄せられた投稿はお役に立ちましたか。

    参考になった投稿には [回答としてマーク] をお願い致します。

    設定いただくことで、
    他のユーザーもお役に立つ回答を見つけやすくなります。

    お手数ですが、ご協力の程どうかよろしくお願いいたします。

    MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2021年3月17日 7:29
    モデレータ
  • NOBTA様

    迅速、回答いただきありがとうございました!!
    一時的なメモリ不足が考えられるとのこと、承知いたしました。

    追加のログの情報記載が難しいため
    現状のメモリ使用状況を確認して、再発時に特定できるようにしたいと思います。
    また、その時のメモリを確認しつつmini server memoryについて
    適切な値の設定を検討することといたします。

    2021年3月19日 0:13