Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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