症状

在 Linux Docker 容器内运行 Microsoft SQL Server 2017 的实例时,可能会收到内存不足的错误消息。

原因

默认情况下,Linux 上的 SQL Server 在 memorylimitmb 配置未启用时对总物理内存使用了80% 的软限制;对于 Docker 容器 SQL,用于考虑总主机内存的80%,而不是将自身限制为分配给 Docker 容器的80% 内存。 这种不正确的内存限制允许 SQL Server 尝试消耗超过容器可用的内存,并且可能是 OOM Killer 终止的候选内存。

注意创建 Docker 图像时,你必须指定-m 以限制 Docker 内存。 有关详细信息,请参阅以下文章。

创建 Docker

解决方案

适用于此问题的修补程序包含在 SQL Server 的以下更新中:

SQL Server 2017 的累积更新10 

提示如果未配置 memorylimitmb 配置,则此修补程序允许 SQL Server 将其自身限制为分配给容器的内存80% 的软限制。

关于 SQL Server 内部版本

SQL Server 的每个新版本都包含上一版本中的所有修补程序和安全修补程序。 我们建议你为你的 SQL Server 版本安装最新版本:

SQL Server 2017 的最新版本

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的标准 术语

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×