Eu tenho um único nó do SQL2012 SP4 executando vários bancos de dados.
O servidor possui 20 GB de memória disponível, 14 GB alocados ao SQL (nada mais está sendo executado na caixa).
A cada poucos minutos, o SQL despeja todo o cache do buffer. A expectativa de vida da página chega a zero, os descritores do cache do buffer mostram que não há nada no cache.
Eu dei uma olhada nas notificações do monitor de recursos e as notificações estão saltando de alta / constante / baixa a cada poucos milissegundos:
RESOURCE_MEMPHYSICAL_HIGH RESOURCE_MEM_STEADY RESOURCE_MEMPHYSICAL_LOW
Com registros de data e hora com vários milissegundos de diferença. O PLE é essencialmente um padrão de dente de serra.
Já vi isso acontecer antes com o SQL2012 SP1 e esta pergunta:
Páginas gratuitas do SQL Server 2012 no cache de buffer não sendo usadas
Parece ser um problema semelhante, embora eu já tenha atualizado para o SP4.
Tentei ativar o LPIM para a conta de serviço e tentei mexer com a configuração de memória máxima. A redução da memória máxima parece ter causado o cache do buffer com mais freqüência.
Alguma idéia do que verificar em seguida?
A carga de trabalho do servidor é literalmente nada (estou percorrendo as listas de itens em um sistema ERP e chega a cerca de 40 a 50 MB antes que o cache caia novamente).
É interessante porque atualizei o SP1 para tentar corrigir isso - o cache estava chegando a cerca de 500 MB. Desde então, reduzi a configuração de memória máxima para 14 GB, o que parece ter piorado.
Eu estou querendo saber se o Windows está entrando em pânico e emitindo notificações incorretas para pressão de memória no SQL - segue-se que o servidor com memória máxima configurada como ilimitado parecia funcionar bem, mas nunca preenche o cache mais do que algumas centenas de MB - mas agora mal chega a 50 ...
Mais informações: para quem pediu
Número de cores: 4
Tamanho do banco de dados: 80GB
O log de erros mostra: A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 247928, committed (KB): 495656, memory utilization: 50%.
Resultados da execução de scripts neste link: https://www.sqlskills.com/blogs/jonathan/identifying-external-memory-pressure-with-dm_os_ring_buffers-and-ring_buffer_resource_monitor/
Não sei como interpretá-los - parece que há pressão de memória interna e externa em vários momentos.
Ainda mais informações:
Este é um convidado do Hyper-V sentado em um host com 96 GB de RAM total, dos quais cerca da metade é alocada para os convidados.
Os sintomas parecem semelhantes a este:
SQL Server 2012 x64 - não é possível alocar com segurança mais de 50% de RAM
No entanto, quando aloquei 14 GB no SQL, os sintomas entraram em ação imediatamente (apenas 3 GB da memória do servidor foram confirmados)
Ontem à noite, instalei a memória de convidado em 32 GB e o problema foi resolvido, mas vejo apenas 14 GB de comprometimento da memória total do servidor (e os negócios que executam o banco de dados estão ocupados hoje de manhã e é quando eles geralmente têm problemas de desempenho).
Cerca de 8 a 9 GB de dados no cache no momento parecem estar estáveis.
Parece sugerir que 20 GB são suficientes para a carga de trabalho nessa caixa. Estou feliz por deixá-lo com 32 GB por enquanto, mas eu realmente gostaria de entender isso para que eu possa configurar melhor as VMs / SQL.
Vou continuar pesquisando e atualizando se encontrar a resposta!
Ainda mais informações:
Não reiniciei o SQL depois de ativar o LPIM (sem perceber que era um requisito), mas deixei essa configuração ativada e reiniciei para atualizar a memória. Agora, não tenho certeza se o aumento na memória ou no LPIM aliviou os problemas.
Irá pular esta noite quando o servidor estiver ocioso e verificar como ele fica com 20 GB novamente.
Ainda Mais Mais Informações:
Atualmente, o servidor está funcionando bem, com 32 GB alocados e não vimos o problema desde então. Se isso aparecer novamente, voltarei a esta pergunta e continuarei cavando.
Atualmente permanece um mistério, mas meu palpite é que só estou ocultando os problemas no momento.