Sintomas
Quando executar uma instância do Microsoft SQL Server 2017 dentro de um contentor Linux Docker, poderá receber uma mensagem de erro fora de memória.
Causa
O SQL Server no Linux por predefinição utiliza um limite suave de 80% da memória física total quando a configuração memory.memorylimitmb não está ativada; Para os contentores Docker, o SQL costumava considerar 80% da memória total do hospedeiro em vez de se limitar a 80% de memória atribuída ao recipiente do estivador. Este limite de memória incorreto permite que o SQL Server tente consumir a memória mais do que a que está disponível para o recipiente e pode ser um candidato à rescisão pelo OOM Killer.
NotaQuando crias a imagem do Docker, tens de especificar - m para limitar a memória do Docker. Consulte o seguinte artigo para obter mais informações.
Resolução
Uma correção para este problema está incluída na seguinte atualização para o SQL Server:
Atualização Cumulativa 10 para SQL Server 2017
Nota Se a configuração memory.memorylimitmb não estiver configurada, esta Correção permite que o SQL Server se limite a um limite suave de 80% da memória atribuída ao recipiente.
Sobre as construções do SQL Server
Cada nova construção para SQL Server contém todos os hotfixes e correções de segurança que estavam na construção anterior. Recomendamos que instale a mais recente construção para a sua versão do SQL Server:
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Referências
Saiba mais sobre a terminologia padrão que a Microsoft utiliza para descrever atualizações de software.