修正: メモリが、SQL Server の memory.memorylimitmb で指定されている構成済みの制限を超えています
現象
sql Server on Linux は、構成された制限を超えるメモリ使用量を表示する top や ps などの監視ツールによって証明されるように、 memory.memorylimitmb 構成オプションによって設定されたメモリ境界に準拠していない可能性があります。
たとえば、次のコマンドの常駐メモリ サイズ (RES) フィールドまたは常駐メモリ使用量 (RSS) フィールドによって報告されるメモリが、 memory.memorylimitmb
によって構成されたメモリよりも高いことがわかります。
top -p $(pidof sqlservr | cut -d' ' -f1)
ps -p $(pidof sqlservr | cut -d' ' -f1) -u
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで修正されます。
Note
修正プログラムを適用した後、Active Directory 認証が構成されているサーバーでは、問題が引き続き表示される場合や、 memory.memorylimitmb
のメモリ制限がすぐに使用されていることに気付く場合があります。 このシナリオでは、linux 上の Kerberos v5 (krb5) パッケージのバージョンを 1.19.2 以降のバージョンに更新して、krb5_gss_inquire_cred()
のdefcred
リークを解決する必要もあります。 詳細については、「 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 Cumulative Update 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 のバージョンに合わせて最新のビルドをインストールすることをお勧めします。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。
サードパーティの情報に関する免責事項
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。 明示的か黙示的かにかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。