Checklist: Performance do Servidor (SQL)

Podemos criar um breve checklist sobre como validar a infraestrutura de um servidor SQL usando o Performance Monitor.

Artigo complementar: Checklist: Performance do Servidor (Windows)

Desafio: Analisando Servidor com Perfmon

O primeiro passo na análise do SQL Server no Performance Monitor é criar um baseline inicial para caracterizar a carga. Depois, complementamos com informações sobre a utilização de memória pelos componentes internos do SQL.

 

Baseline do SQL Server

Esses contadores devem ser usados para ajudar a caracterizar a carga no banco de dados:

General Statistics

  • Connection Reset/sec: taxa de sessões reiniciando a sessão através do connection pooling
  • Logins/sec: taxa de autenticações no servidor
  • Logouts/sec: taxa de usuários desconectando do servidor
  • User Connections: quantidade de sessões de usuários

SQL Statistics

  • Batch Requests/sec: taxa de requisições recebidas por segundo
  • Safe Auto-Params/sec: taxa de autoparametrização (auto-param) realizadas
  • Forced Parametrizations/sec: taxa de parametrização forçada (forced-param) realizadas
  • SQL Compilations/sec: taxa de compilação pelo otimizador
  • SQL Re-Compilations/sec: taxa de recompilação pelo otimizador

Existem valores e sugestões para esses contadores. No entanto, o mais importante é ter um baseline para comparação futura.

 

Buffer Manager: Consumo de Memória

A memória do servidor SQL Server pode ser observada melhor com o auxílio dos contadores:

  • Buffer Manager: Page life expectancy: verificar se esse valor se mantém constante ou subindo ao longo do tempo. O cálculo do Page Life Expectancy é mais complexo em máquinas NUMA e corresponde a uma média harmônica entre os nós. As quedas desse contador indicam o momento de aumento de carga. Valores de referência:
    • <10 : excessivamente baixo, podendo gerar erros, asserts e dumps
    • <300 : baixo
    • 1000: razoável
    • 5000 : bom
  • Buffer Manager: Free list stalls/sec: garantir que é sempre zero. A ocorrência de stall significa que as threads foram congeladas e estão todas trabalhando em conjunto com o Lazy Writer para a liberação de memória. Em geral, esse comportamento ocorre quando o Page Life Expectancy fica próximo de zero.
  • Buffer Manager: Lazy writes/sec: usar esse número como baseline. O processo de Lazy Writer (LW) ocorre lentamente em background. Quando esse contador aumenta, isso pode significar que a memória livre está baixa e, por isso, o servidor acelerou o processo do LW.
  • Buffer Manager: Page lookups/sec: usar esse número como baseline. 
  • Buffer Manager: Page reads/sec: usar esse número como baseline de comparação com as operações de leitura em disco (Read IOPS). Podemos estimar que cada Page Read corresponde a um I/O de leitura no disco.
  • Buffer Manager: Readahead pages/sec: usar esse número como baseline de comparação com as taxas de leitura no disco (MB/s). Podemos dizer que cada Readahead page corresponde a 8Kb de leitura sequencial no disco.

 

Distribuição de Memória do SQL Server

A distribuição de memória do Database Cache pode ser observada com os contadores:

  • Database pages: número de páginas correspondente ao Database Cache.  
  • Free pages: número de páginas livres no Buffer Pool. Se a quantidade de páginas livres ficar constante (acima de 1000), então está sobrando memória.
  • Stolen pages: quantidade de páginas dedicadas para tarefas internas do banco de dados (compilação, execução, object cache). Quanto maior for o número de stolen pages, menos páginas ficarão disponíveis para o Database Cache. Sugestão de valores:
    • 25% : normal
    • 50% : relativamente alto, pode causar pressão de memória interna – exceto se houver muitas Free Pages disponíveis
    • 75% : excessivamente alto, investigar qual o Memory Clerk responsável pelo consumo – exceto se houver muitas Free Pages disponíveis
  • Target pages: total de páginas a ser alcançado pelo SQL Server em um futuro. Monitorar se existem quedas bruscas nesse valor, que indicaria uma pressão de memória externa.
  • Total pages: total de páginas alocadas pelo SQL Server.
    • Target pages = Total pages : normal
    • Target pages > Total pages : warmup do servidor ou a memória está sobrando
    • Target pages < Total pages : enquanto essa condição for verdadeira, o Lazy Writer estará trabalhando agressivamente para reduzir o número de páginas até igualar ao Target Page.

 

Referência

Os demais artigos dessa série estão listados abaixo.

Artigo: Perfmon- Falso Sentido de Monitoração

Artigo: Os 7 Grandes Mitos do Perfmon:

Artigo: Contadores do Perfmon

Desafio: Analisando Servidor com Perfmon

Artigo: Monitorando com o Perfmon

Checklist