KB4347055 - 修复:在 Linux Docker 容器中运行 SQL Server 2017 时出现内存不足错误

应用对象
SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core

症状

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

原因

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

备注 创建 Docker 映像时,必须指定 –m 来限制 Docker 内存。 有关详细信息,请参阅以下文章。

创建 Docker

解决方法

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

SQL Server 2017 累积更新 10

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

关于 SQL Server 内部版本

SQL Server 的每个新内部版本都包含先前内部版本中的所有修补程序和安全修补程序。 我们建议您安装 SQL Server 的最新版本:

SQL Server 2017 的最新版本

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

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