修正: メモリが、SQL Server の memory.memorylimitmb で指定された構成済みの制限を超えています

現象

SQL Server on Linux は、Memory.MemoryLimitMB 構成オプションで設定されたメモリ境界に準拠していない可能性があります。TOP や PS などの監視ツールが、構成された制限を超えるメモリ使用量を表示することでわかります。

たとえば、次のコマンドで常駐メモリ サイズ (RES) フィールドまたは常駐メモリ使用量 (RSS) フィールドで報告されたメモリが、 memory.memorylimitmb で構成されたメモリよりも大きいことがわかります。

top -p $(pidof sqlservr | cut -d' ' -f1)

ps -p $(pidof sqlservr | cut -d' ' -f1) -u

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

注

修正プログラムを適用した後でも、Active Directory 認証が構成されているサーバーでは、問題が発生したり、 memory.memorylimitmb のメモリ制限がすぐに消費されたりする可能性があります。 このシナリオでは、Linux の Kerberos v5 (krb5) パッケージのバージョンを 1.19.2 以降のバージョンに更新して、krb5_gss_inquire_cred()のdefcredリークを解決する必要もあります。 詳細については、「 Fix defcred leak in krb5_gss_inquire_cred()」を参照してください。

Red Hat Enterprise Linux (RHEL) 8、Ubuntu 20.04、または SUSE Linux Enterprise Server (SLES) 12 ディストリビューションの場合、Linux ディストリビューション ベンダーに問い合わせて、krb5 の更新パッケージをリクエストする必要がある場合があります。

パッケージを更新できない場合でも、アプリケーション接続文字列でプールされた接続を使用することで、 krb5_gss_inquire_cred() のリークを回避できます。

SQL Server on Linux でのメモリ使用量の監視

SQL Server 2022 累積更新プログラム 14 (CU14) または SQL Server 2019 CU27 以降のバージョンをインストールすると、動的管理ビュー (DMV) の [system_low_memory_signal_state] 列と [system_high_memory_signal_state] 列を使用してシステム リソース アラートsys.dm_os_sys_memory監視できるようになります。 system_low_memory_signal_state 1が一貫して表示される場合は、SQL Server のメモリ割り当てを増やすことを検討するか、最も多くのメモリを消費するクエリを確認してから、メモリ要件を解決します。

SQL Server 用の累積的な更新プログラムについて

SQL Server 用の新しい累積的な更新プログラムには、以前のビルドであったすべての修正プログラムとセキュリティ修正プログラムが含まれます。 ご使用のバージョンの SQL Server 用の最新ビルドをインストールすることをお勧めします。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。

サードパーティの情報に関する免責事項

この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。