Resolução de problemas de Banco de Dados X Desempenho do Servidor

Parte I - Avaliando o uso de Memória

  

Quando um servidor SQL Server 2005 não está funcionando bem, atendendo as exigências de desempenho esperado, estamos numa situação onde pode ser um resultado de várias questões conjugadas, que podem ser: do próprio banco de dados, entre as instâncias do SQL, ou ainda no desempenho dos recursos físicos do servidor. Como em qualquer tipo de servidor, os gargalos podem ocorrer por causa da pressão em um ou vários recursos de servidor como memória, disco rígido, I/O, e no uso da CPU. Você precisa ser capaz de determinar se um sistema está impropriamente configurado para a carga de trabalho, ou se a modelagem de dados encontra-se pobre sendo a principal razão do problema.

 

Iniciaremos uma série de artigos, objetivando cobrir esta demanda de administração de Banco de Dados. Começaremos abordando a resolução de problemas no tocante a desempenho do físico do servidor como CPU, memória dentre outros. Bem como as ferramentas que você pode usar para diagnosticar problemas de servidor. As principais ferramentas que você deve usa para este propósito são as ferramentas de desempenho do Windows Server 2003: System Monitor e Perfomance Logs and Alerts Além destas, você pode usar o SQL Server Profiler para investigar o desempenho geral do servidor. Quando você identificar o recurso físico sob pressão, o SQL Server Profiler pode ajudá-lo a determinar por que aquele recurso está se apresentando desta maneira.  Os eventos relacionados à falhas do SQL Server 2005 são escritos no log de eventos do Windows e bem também no log do SQL Server.

 

Você pode usar o System Monitor para adquirir de imediato valores dos contadores e diagnosticar problemas que podem resultar na degradação de desempenho, e você pode estabelecer alertas de desempenho para descobrir quando um  contador excede ou fica abaixo de um valor predefinido. É importante que você faça um diagnóstico quando verificar degradação do desempenho do SQL Server, criando um log para monitorar os contadores por um período de 24 horas, por exemplo. Claro que o período de análise deve ser estimado de acordo com a necessidade dos sistemas de Banco de Dados em questão.

 

Você pode criar logs com os contadores para que sejam executados imediatamente ou em um tempo especifico, e registrar o valor de desempenho dos contadores em intervalos predefinidos. Você pode criar alertas em que enviam a você uma mensagem, escrever nos eventos do Application Log, ou iniciar programas executáveis se a leitura do contador fica cima ou abaixo de um valor predefinido.

 

Recomendamos que você observe e monitore os seguintes contadores:

¦ Memory: Pages/sec

¦ Memory: Available Bytes

¦ SQL Server: Buffer Manager: Buffer Cache Hit Ratio

¦ Physical Disk: Disk Reads/sec

¦ Physical Disk: Disk Writes/sec

¦ Physical Disk: % Disk time

¦ Physical Disk: Avg. Disk Queue Length

¦ Physical Disk: % Free Space

¦ Logical Disk: % Free Space

¦ Processor: % Processor Time

¦ System: Processor Queue Length

¦ Network Interface: Bytes Received/sec

¦ Network Interface: Bytes Sent/sec

¦ Network Interface: Output Queue Length

¦ SQL Server: General: User Connections

 

Avaliando o uso de Memória

 

Você pode identificar gargalos de memória por paginação excessiva, alto consumo de memória, baixa taxa de buffer cache hit, e um alto volume de operações do disco de leitura e gravação.

 

A lista a seguir mostra os contadores que você precisar monitorar:

 

¦ Memory: Pages/sec

¦ Memory: Available Bytes

¦ SQL Server: Buffer Manager: Buffer Cache Hit Ratio

¦ Physical Disk: Disk Reads/sec

¦ Physical Disk: Disk Writes/sec

 

-          Memory: Pages/sec

Este contador mede o número de páginas por segundo que são paginadas fora da memória principal para a memória virtual(disco rígido). Uma alta leitura indica que  a memória do servidor esta sob estresse, com isso ocorre mais paginação e I/O também. A paginação é uma operação normal no servidor na qual você precisa manter a um nível aceitável. Você não deve tentar eliminá-la.

 

Assumindo que o Servidor SQL é a principal aplicação que está sendo executada no servidor, o valor médio deste contador deve ficar entre  zero e 20. Picos maiores do que 20 são normais. Se o seu servidor está com a média de mais de 20 páginas por segundo, uma das causas prováveis é o gargalo de memória. Em geral, quanto mais memória principal o servidor tiver, menor será paginação que ele tem de executar.

 

-          Memory: Available Bytes

O SQL Server 2005 tenta manter entre 4 e 10 Mb da memória física livre. O contador Memory: Available Bytes mede o montante da memória física livre no servidor. O valor médio deste contador deve ser maior do que 5 MB, caso contrário, o seu  servidor pode estar experimentando uma queda de desempenho por causa de estresse sob a memória.

 

-          SQL Server: Buffer Manager: Buffer Cache Hit Ratio

Este contador indica com que freqüência o SQL Server 2005 acessa o buffer e não o disco rígido para pegar os dados. Se o seu servidor está rodando aplicações OLTP, este contador deve exceder 90%, e de maneira ideal ele deve está perto de 99 por cento. Se a taxa do Buffer Cache Hit ficar menor do que 90%, normalmente indica que a memória está sob pressão, reduzindo assim o desempenho geral do SQL Server. Você tem de tomar ação apropriada (tipicamente, acrescente mais RAM). Se a leitura está entre 90 e 99%, você não poderia ter um problema real, mas a adição de memória RAM poderia melhorá o desempenho. Se o seu banco de dados é muito grande, contudo, você não poderia chegar perto de 99%, mesmo se você puser o montante máximo da memória RAM no seu servidor.

 

Se o seu servidor está rodando aplicações do tipo OLAP (online analytical processing), a taxa do contador Buffer Cache Hit pode ser significativamente menor de 90%, em virtude de como trabalha as aplicações OLAP.  Por essa razão, você deve tratar o valor do contador com a máxima prudência e usá-lo para diagnosticar só se você já tem evidência que o SQL Server está acessando o disco rígido mais freqüentemente do que ele deveria. De outra maneira, acrescentando mais memória principal quase sempre melhora o desempenho de um servidor SQL Server.

 

-          Physical Disk: Disk Reads/sec e Physical Disk: Disk Writes/sec

Os valores desses contadores podem ser difíceis de interpretar, porque o limite aceitável de transferência dependem do hardware instalado no seu servidor. Por exemplo, os discos SCSI pode tratar de 50 até 70 operações de entrada-saida por segundo. Assim, os valores absolutos nos contadores não poderiam indicar que o seu recurso de disco está sob pressão, mas uma leitura que cresce dentro de algum intervalo pode indicar a pressão crescente no seu recurso de memória. Você precisa analisar os valores Physical Disk: Disk Reads/sec e Physical Disk: Disk Writes/sec em conjunto com a Memory: Pages/sec, Memory: Available Bytes, e, SQL Server: Buffer Manager: Buffer Cache Hit Ratio para determina se o seu recurso de memória está sob stress.

 

Agora vamos demonstrar como você pode monitorar seu servidor SQL Server 2005. Em nosso exemplo utilizamos Windows 2003 Server.

 

 

1.    Na máquina em que você vai analisar o desempenho sob o recursos de memória procure no menu Programs ou (All Programs), escolhendo  Administrative Tools, e em seguida a opção  Performance, e clique em System Monitor.

 

2.    Agora vamos adicionar contadores para começar nossa analise (para adicionar os contadores pressione no botão +). Será mostrado um menu drop-down para que você selecione o objeto para ser analisado o desempenho, conforme figura abaixo.

 
25-07-2007pic01.jpg

 

3.    Escolha o recurso que deseja monitorar, em nosso exemplo escolhemos Memory, e pressione Close.

 

4.    Expanda Performance Logs and Alerts e selecione Counter Logs.

 

5.    Escolha New Log Settings. Salve com o nome que melhor lhe convinher e clique em OK. Agora clique em Add Counters. Será mostrada uma outra janela onde você pode escolher os contadores que você deseja verificar, selecione Use Local Computer Counters e em seguida adicione os objetos relativos a memória (Memory). Em nosso exemplo, escolhemos apenas dois para efeito de ilustração, você pode utilizar os contadores que recomendamos para avaliar o recurso de memória. Veja tela a seguir.

 

 25-07-2007pic02.jpg

 

6.    Veja que você poderá utilizar um usuário específico para a execução desta monitoração em nosso exemplo, colocamos o usuário Administrator.

 

7.    Você pode ainda agendar a execução desta monitoração. Na Aba Schedule, você pode definir o horário de execução de acordo com a sua necessidade, conforme figura abaixo.

 

25-07-2007pic03.jpg 

 

No próximo artigo continuaremos a analisar outros recursos, a fim de que você possa ter mais condições de resolução de problemas em seu servidor SQL Server.