Memória alta do servidor e cpu - sem fios

1

Recebi uma solicitação para solucionar problemas em um servidor que hospeda nosso aplicativo nas instalações de um cliente.

O cliente reclamou conosco em duas ocasiões distintas na última semana - semana e meia. Em uma instância, eles alegaram que a memória do servidor estava "maximizada" e, em outra instância, alegaram que a CPU estava "no máximo". Em ambas as ocasiões, nosso aplicativo ficou inutilizável e o cliente foi forçado a reinicializar o servidor.

As especificações do servidor são as seguintes:

System Manufacturer Dell Inc.
System Model    PowerEdge R320
System Type x64-based PC

Processor   Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz, 2200 Mhz, 6 Core(s), 12 Logical Processor(s) - Hyperthreading-enabled???

OS Name Microsoft Windows Server 2008 R2 Standard
Version 6.1.7601 Service Pack 1 Build 7601

Installed Physical Memory (RAM) 32.0 GB
Total Physical Memory   32.0 GB
Available Physical Memory   26.1 GB
Total Virtual Memory    41.7 GB
Available Virtual Memory    34.9 GB
Page File Space 9.77 GB
Page File   C:\pagefile.sys

Nosso aplicativo é ativado por Microsoft SQL Server 2012 (11.0.2100.60 (X64) - Standard Edition), IIS 7.5, a handful of proprietary Windows Services applications - eles estão todos no mesmo servidor.

Recentemente, o desempenho do aplicativo foi mais estável e aceitável. Mas tenho a sensação de que é apenas uma questão de tempo até que a saúde deste servidor diminua novamente.

Fui solicitado a investigar essas ocorrências anteriores. Mas eu não pareço ter muito para continuar.

O Windows Event Viewer tinha algumas entradas confirmando suas alegações de pressão de memória. Havia 12 dessas entradas listadas consecutivamente no visualizador de eventos de uma hora.

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): 221384, committed (KB): 434308, memory utilization: 50%.

Em um esforço para ser proativo e preparar-se para outra possível paralisação, habilitei o registro do PerfMon para um arquivo csv no servidor que inclui os seguintes contadores:

  • Memória \ MBytes disponíveis
  • Memória \ Páginas / seg
  • Memória \% de bytes confirmados em uso
  • Arquivo de paginação (\ ?? \ C: \ pagefile.sys) \% Uso
  • PhysicalDisk (*) \ Avg. Disco sec / leitura
  • PhysicalDisk (*) \ Avg. Disco sec / Write
  • PhysicalDisk (*) \ Leituras de disco / seg
  • PhysicalDisk (*) \ Gravações de disco / s
  • Comprimento da fila do sistema \ processador
  • SQLServer: Gerenciador de Buffer \ Expectativa de vida da página
  • SQLServer: Estatísticas gerais \ Conexões de usuário
  • SQLServer: Gerenciador de memória \ Concessões de memória pendentes
  • SQLServer: estatísticas SQL \ Solicitações em lote / s
  • SQLServer: Estatísticas SQL \ Compilações SQL / s
  • SQLServer: Estatísticas SQL \ Re-Compilações SQL / s
  • Processador (_Total) \% Tempo do Processador
  • Sistema \ Opções de contexto / s
  • Sistema \ Processos
  • Processo (x) \% Tempo do processador (em que x está em (sqlservr, w3wp, etc))

Também configurei alguns alertas básicos de e-mail no agente do SQL Server para níveis de gravidade: 17 a 25 e alguns IDs de erro específicos.

(1) O que mais eu deveria estar rastreando / monitorando / fazendo para que eu esteja melhor preparado para o próximo acidente? Gostaria de obter dados suficientes para refazer os eventos que levaram ao acidente.

(2) Sabemos que houve pressão de memória com base na entrada Windows Event Viewer, mas depois de analisar os dados do PerfMon que coletei até agora, algumas coisas se destacam, o que pode indicar problemas de CPU, mas eu não tenho certeza absoluta. O seguinte parece alto demais para o conforto? Os picos de > 50 me preocupam, embora não sejam por um período prolongado

Para Processor Queue Length :

Average = 0.5
Median = 0
Min = 0
Max = 89
Std Deviation = 3.07
    
por John Russell 27.03.2015 / 21:16

1 resposta

1

Faça login no SQL Server Management Studio, clique com o botão direito na sua instância e vá para Propriedades > Memória. Por padrão, o SQL Server 2012 Standard define sua memória máxima do servidor para algo ridículo como 2147483647 MB. Gostaria de definir a memória máxima do servidor para o SQL Server para algo como 8192 MB (ou menos de 32 GB).

Em vez de usar o PerfMon, talvez você possa usar o SQL Server Profiler em Ferramentas no SQL Server Management Studio. Isso será pesado em recursos, mas você pode ter uma ideia muito melhor do que está acontecendo no aplicativo que pode causar um aumento no uso da CPU ou da memória.

    
por 20.07.2015 / 09:13