Falta de Memória na Máquina


No post anterior falei sobre a memória livre no sistema operacional, no qual apresentava um gráfico com grande variação na quantidade de memória livre.

Afinal, como descobrir se falta memória RAM no meu servidor? Existe uma forma bastante simples usando a ferramenta do Performance Monitor. Basta acompanhar o contador “Memory: Available MBytes”.

image

Esse contador apresenta a evolução da memória ao longo do dia e permite descobrir os horários *exatos* no qual o servidor sofreu de pressão por memória. No exemplo abaixo, observamos que às 15h e 16h30 foram momentos bastante críticos.

image

Sintomas:

  • Uma ou mais aplicações aumentam o consumo de memória
  • Sistema Operacional inicia a paginação de memória de todos os processos

Nesse caso específico, haviam duas instâncias SQL Server rodando na mesma máquina. Nesse caso, recomendamos utilizar a configuração do “Max Server Memory” para limitar o tamanho das instâncias e evitar a paginação.

Problema:

A paginação dos processos para disco (Page File) causa lentidão temporária no servidor e pode prejudicar os processos. A lentidão pode durar desde segundos a alguns minutos. Seria isso um problema? Tudo depende da carga:

  • Uma rotina batch que dura horas não será visivelmente afetada
  • Acessos de milissegundos podem demorar segundos (uma eternidade!) para finalizar

Atualmente com máquinas de 64GB ou mais de memória, acho prudente deixar pelo menos 2GB livre. Essa memória livre seria uma sobrevida em caso de picos de consumo.

Você discorda? Deixe seu comentário!

Comments (8)

  1. Demétrio Silva disse:

    Fala Catae,

    Apenas acrescentando, poderiamos usar Lock Pages in Memory para evitar a paginação.

    Os 2Gb disponíveis, são recomendados quando tenho um server com mais de 12GB de ram, visto que, a PTE consegue mapear até 12GB de ram quando deixamos apenas 1GB para o SO. Quando tenho mais de 12GB, o espaço ocupado pela PTE aumenta.

    Abraço

  2. Fala Demétrio!!! É verdade, Lock Pages in Memory vai resolver o problema. Ou deveria dizer, vai "mascarar" o problema.

  3. A conversa sobre PTE é bastante extensa e fica difícil de generalizar. Isso me lembra um dos posts do Slava Oks, que comenta sobre a falta de memória virtual (que é teoricamente limitada em 7TB) devido à falta de PTE.

  4. Demétrio Silva disse:

    Opa Catae,

    Não conhecia o post do Slava sobre PTE. Vou procurar na net.

    Não entendi quando você citou "difícil de generalizar". O fato do PTE usar mais páginas para alocar mais memória não seria "um dos motivos" para deixar mais memória para o SO ?

    Grande abraço

  5. Com relação à pergunta "O fato do PTE usar mais páginas para alocar mais memória não seria "um dos motivos" para deixar mais memória para o SO?":

    SIM, você tem toda a razão. O comentário é MUITO válido. Mas PTE não deveria (embora possa) ser a principal preocupação quando trabalhamos com máquinas de 16GB. Esse tipo de discussão é excelente!

    Abraços, Fabricio

  6. Marcelo Costa disse:

    Olá Catae, tudo bem?

    No passado tive um problema de falta de memória no SQL Server (configurado para gerenciar a memória), onde analisando os contadores de alocação de memória e paginação  do sistema operacional, não era possível identificar nenhuma contenção de memória.

    Entretanto, após analisar contadores do SQL, foi possível identifica que o SQL estava com pouco memória disponível, através do uso de ciclo de página em memória.

    Qual contador do SQL é utilizado para esta análise? e como deve ser analisado?

    Abraços

    Marcelo

  7. Oi Marcelo! Desculpa pela demora na resposta…

    A sua análise está correta. Esses contadores de paginação e memória livre ajudam a determinar se há falta de recurso no sistema operacional. Entretanto, é FUNDAMENTAL analisar os contadores do SQL para identificar se há contenção de memória INTERNA à instância.

    Estou devagar e sempre documentando cada um deles. Eles seriam Target Pages, Total Pages, Stolen Pages, e principalmente os contadores de Lazy Writes/sec e Page Life Expectancy.

    Obrigado pelo seu comentário!!!

Skip to main content