修正:記憶體超過 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() 中的解構洩漏。
針對 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 2022 累積更新 14 (CU14) 或 SQL Server 2019 CU27 或更新版本之後,您將能夠使用system_low_memory_signal_state
動態管理檢視 (DMV) 中的 sys.dm_os_sys_memory
和 system_high_memory_signal_state
數據行來監視系統資源警示。 如果 system_low_memory_signal_state
一致顯示 1
,請考慮增加 SQL Server 的記憶體配置,或檢閱耗用最多記憶體的查詢,然後解決其記憶體需求。
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含先前組建中的所有 Hotfix 和安全性修正。 建議您為 SQL Server 版本安裝最新的組建:
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
參考資料
了解 Microsoft 用來說明軟體更新的術語。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。