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
Comments
- Anonymous
December 08, 2016
Ótimo artigo, isso vai me ajudar muito a trabalhar.Teria alguma recomendação de contadores para discos físicos, locks e latches?Obrigado!- Anonymous
December 12, 2016
Obrigado pelo comentário. Os contadores de disco estao no post de checklist do servidor Windows. Trabalhei muito tempo monitorando latches e locks, mas consegui poucos resultados com o Performance Monitor. O melhor caminho é usar as DMV's: sys.dm_exec_requests e sys.dm_os_waiting_tasks.
- Anonymous