O arquivo de paginação gerenciado pelo sistema usa todo o espaço disponível, a memória física alocada não é usada

1

O problema:

Algo em nosso servidor de banco de dados virtualizado está usando grandes quantidades de nosso arquivo de paginação. Observamos há cerca de uma semana, quando a unidade do SO passou de 30 GB de espaço livre para cerca de 500 KB de espaço livre em uma tarde. Eu localizei o espaço usado na forma de um enorme arquivo de paginação (75 + GB). Eu desliguei o arquivo de paginação gerenciado pelo sistema e o dividi em partes iguais em 4 discos lógicos (em 4 matrizes físicas diferentes). Em vez de ficar sem espaço no disco rígido e sem erros de memória, estamos agora apenas com erros de memória, apesar de o servidor parecer ter vários gigabytes de RAM não usada.

Eu não sei como localizar a causa exata, mas eu executei algumas ferramentas que eu esperava que tornassem a fonte do problema muito clara, mas nada foi óbvio o suficiente para mim.

Os detalhes:

  • Windows Server 2008 R2 virtualizado com o Sql Server 2008 em execução
  • 32 GB de RAM atribuída estaticamente alocada para a VM
  • O Sql Server foi configurado para usar 18 GB
  • Instância pequena do MySql em execução também
    • query_cache_limit configurado em 8MB
    • query_cache_size configurado em 128MB
  • tem função de controlador de domínio e é um catálogo global (sim, eu sei que ele não deve ser um controlador de domínio, mas temos recursos limitados)
  • Arquivo de paginação dividido em 4 partes em 4 discos lógicos, cada disco lógico é seu próprio vhd em seu próprio array físico no servidor virtual do host
    • O arquivo de paginação está definido como 8192 MB, no máximo, 12288 MB para cada parte
    • O arquivo da página original tinha 48 GB e foi expandido dinamicamente
  • Threads e processos permanecem em torno dos mesmos números durante o problema e enquanto o problema não está ocorrendo - Threads: ~ 720-750, Processos: ~ 62

Coisas que tentei:

  • Limitando o Sql Server a menos RAM - 14 GB - sem efeito
  • parando e desabilitando o serviço MySql5.5, com um reinício posterior
  • Aumentando o Sql Server para usar mais RAM - 28 GB - sem efeito
  • executando o RAMMap pela Sysinternals - nada fora do comum apareceu

Eu não posso parar permanentemente o serviço MySql e o serviço do Sql Server precisa continuar funcionando durante o dia. Parece haver surtos de memória ou uso de arquivo de paginação, onde a comunicação remota no servidor não é possível devido à falta de recursos e, pouco tempo depois, posso me conectar novamente. Minutos depois, eu nem conseguirei abrir o bloco de notas ou o gerenciador de tarefas. Numerosos erros aparecem na tela relacionados à memória insuficiente (o que eu não tenho disponível já que o problema não está ocorrendo neste momento, mas vou atualizar com vários erros quando eles ocorrerem).

Durante todo o tempo em que isso ocorre, o gerenciador de tarefas diz que há vários GB de memória física livre (entre 12 GB e 2 GB, dependendo da memória alocada para o Sql Server)

Uma coisa que eu suspeito que tenha inicialmente desempenhado um papel nisso foi que uma matriz no servidor host tinha um disco com falha e outra estava na falha prevista (raid5, 3 discos), então se as gravações atrasaram, achei que empilhando na memória ou no arquivo de paginação.

Existe alguma coisa que eu possa inicialmente tentar determinar o uso de arquivo de pagina alta com esperançosamente uma lista de processos que mostram quanta arquivo de pagina e memoria fisica eles estao usando quebrados? Ou alguma maneira de saber se esse uso de memória é sintomático de um problema mais sério com hardware ou sistema operacional?

    
por wmb 31.10.2014 / 22:21

0 respostas