CORREÇÃO: A memória excede os limites configurados especificados por memory.memorylimitmb no SQL Server
Sintomas
O SQL Server no Linux pode não estar em conformidade com os limites de memória definidos pela opção de configuração memory.memorylimitmb, conforme evidenciado por ferramentas de monitoramento, como top e ps, exibindo o uso de memória que excede os limites configurados.
Por exemplo, você observa que a memória relatada pelos campos Tamanho da memória residente (RES) ou Uso da memória residente (RSS) nos comandos a seguir é maior do que a memória configurada pelo memory.memorylimitmb
.
top -p $(pidof sqlservr | cut -d' ' -f1)
ps -p $(pidof sqlservr | cut -d' ' -f1) -u
Resolução
Esse problema é corrigido nas seguintes atualizações cumulativas do SQL Server:
Observação
Depois de aplicar a correção, para servidores que têm a autenticação do Active Directory configurada, você ainda poderá ver o problema ou perceber que os limites de memória são consumidos memory.memorylimitmb
rapidamente. Nesse cenário, você também precisa atualizar a versão dos pacotes Kerberos v5 (krb5) no Linux para 1.19.2 ou versões posteriores para resolver um defcred
vazamento no krb5_gss_inquire_cred()
. Para obter mais informações, consulte Corrigir vazamento confirmado em krb5_gss_inquire_cred().
Para distribuições do Red Hat Enterprise Linux (RHEL) 8, Ubuntu 20.04 ou SUSE Linux Enterprise Server (SLES) 12, talvez seja necessário entrar em contato com o fornecedor da distribuição do Linux para solicitar pacotes atualizados para o krb5.
Se você não puder atualizar os pacotes, ainda poderá contornar o vazamento usando krb5_gss_inquire_cred()
conexões em pool nas cadeias de conexão do aplicativo.
Monitorar o uso de memória no SQL Server no Linux
Depois de instalar a Atualização Cumulativa 14 (CU14) do SQL Server 2022 ou o SQL Server 2019 CU27 ou versões posteriores, você poderá monitorar alertas de recursos do sistema usando as system_low_memory_signal_state
colunas e system_high_memory_signal_state
na sys.dm_os_sys_memory
DMV (exibição de gerenciamento dinâmico). Se system_low_memory_signal_state
mostrar 1
consistentemente, considere aumentar a alocação de memória para o SQL Server ou examine as consultas que consomem mais memória e resolva seus requisitos de memória.
Sobre atualizações cumulativas para SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e correções de segurança que estavam na compilação anterior. Recomendamos que você instale o build mais recente para sua versão do SQL Server:
- Atualização cumulativa mais recente do SQL Server 2022
- Atualização cumulativa mais recente do SQL Server 2019
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.