修正:記憶體超過 SQL Server 中 memory.memorylimitmb 所指定的設定限制

症狀

Linux 上的 SQL Server 可能不符合 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 或更新版本,以解決 defcred 中的洩漏krb5_gss_inquire_cred()問題。 如需詳細資訊,請參閱 修正 krb5_gss_inquire_cred () 中的 defcred leak 。

對於 Red Hat Enterprise Linux (RHEL) 8、Ubuntu 20.04 或 SUSE Linux Enterprise Server (SLES) 12 發行版,您可能需要連絡 Linux 發行商,以要求 krb5 的更新套件。

如果無法更新套件,您仍然可以使用應用程式連接字串中的集區連線來解決洩漏 krb5_gss_inquire_cred() 。

監視 Linux 上的 SQL Server 中的記憶體使用量

SQL Server CU14) 或 SQL Server 2019 CU27 或更新版本 (安裝 2022 累積更新 14 或更新版本之後,您可以使用動態管理檢視 (DMV) 中的 sys.dm_os_sys_memory 和 system_high_memory_signal_state 欄來system_low_memory_signal_state監視系統資源警示。 如果system_low_memory_signal_state一致顯示 1,請考慮增加 SQL Server 的記憶體配置,或檢閱耗用最多記憶體的查詢,然後解決其記憶體需求。

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含前一個組建中的所有 Hotfix 和安全性修正程式。 建議您安裝適用於您 SQL Server 版本的最新組建:

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語。

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。