Vazamento de memória do Windows Server 2008 R2 de 64 bits


12

Estou tendo problemas em um dos servidores do meu escritório. É um servidor Windows 2008 R2 virtualizado com 6 GB de memória RAM. Ele possui apenas o Microsoft SQL Server (memória atribuída no máximo = 3 GB) e apenas um software que não consome mais de 1 GB de RAM. No entanto, a memória RAM do servidor está quase cheia e, olhando para os processos no gerenciador de tarefas, eles não parecem somar isso. Eu instalei o RamMap, mas não consigo interpretá-lo com muita facilidade. Existe algum "alto valor" que você possa identificar?

insira a descrição da imagem aqui


1
Classificar por "Total" ou "Ativo" tornaria a resposta bastante óbvia.
Dmitry Grigoryev

Respostas:


18

Bem, vejo ~ 3,2 gigabytes de memória Driver Locked, que imediatamente se destaca como suspeita.

Esse tipo de memória, memória bloqueada pelo driver, é uma memória que foi bloqueada por um driver no modo kernel. Normalmente, com a finalidade de transferir pequenas quantidades de dados, geralmente por curtos períodos de tempo.

Portanto, se você tiver um grande pedaço de memória bloqueada do driver, por um longo tempo, geralmente é um sinal de que algo não está certo.

Vou adivinhar aqui e acho que desde que você mencionou que é um servidor virtualizado, é o driver de balão VMware que está fazendo isso. Não tenho dados suficientes para explicar por que está fazendo isso, mas há muitos casos e os KBs de suporte da VMware, como este , falam especificamente sobre o driver do balão que retém erroneamente grandes quantidades de memória quando não deveria ' não seja.

Você também deve considerar a possibilidade de que o driver do balão esteja se comportando conforme o projetado e está tentando tornar a página do servidor sem memória, porque precisa desesperadamente fornecer memória para outra VM no mesmo host.

Há ainda outra possibilidade de que não seja um driver de memória dinâmica de hipervisor, mas apenas um driver de dispositivo não autorizado.

Os drivers geralmente alocam a memória "marcada" com uma etiqueta de 3 ou 4 caracteres que fornece uma dica sobre qual driver foi responsável por fazer a alocação.
poolmon.exe, parte do Windows SDK / DDK, pode ajudar a diagnosticar.

Como eu disse, palpite, mas é o melhor que posso fazer com os dados que tenho.


16

Bem, eu tenho todas as versões imagináveis ​​do SQL Server no local, de 2005 a 2016, e não vi nenhum vazamento de memória tão grande quanto 100% do mem realmente usado. Veja se você tem a Memória dinâmica para sua máquina virtual ativada .

Driver Lockedé uma figura na qual você deve se concentrar. No seu caso específico, Driver Lockedé provavelmente um dos drivers do Hyper-V, que bloqueou toda a memória não utilizada (atribuída à VM, mas não utilizada por ele), para que possa "fornecê-la" a outra VM configurada com Memória Dinâmica ou SO host, o que for necessário no momento. Você pode testá-lo abrindo algum arquivo grande ou aplicativo com uso intenso de memória dentro dessa máquina virtual - a memória do DriverLocked deve ficar inativa à medida que outras métricas aumentam. IMHO, isso não deve ser motivo de preocupação se você não aprovisionar muito a memória em todas as VMs.


5
Eu venci você em 8 segundos ... bem-vindo ao Server Fault. :)
Ryan Ries

Você fez, na verdade :-)
Kitet
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.