Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AMorgado

Lentidao extrema

Recommended Posts

Olá pessoal, bom dia.

 

Estou enfrentando uma série de lentidões em um servidor (Win2003Server/SQL Server 2005 SP3) que nao estou conseguindo descobrir qual a causa.

 

A unica alteração de cenario que tive nos ultimos dias, foi o nro de acessos a uma base consolidada que gera uns relatorios pesados (vários usuarios gerando 2 ou 3 relatorios na mesma base, no mesmo período, só que de filiais diferentes. Analisando a aplicação, vi que a mesma cria tabela temporaria e é neste ponto que acontece a lentidao.

 

Observando do Activity Monitor os processos destes usuarios geralmente ficam em CXPACKET e PAGEIOLATCH_SH.

 

Alguem pode me ajudar?

 

Obrigado

 

Ademir Morgado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para começa...

 

Verifica utilização de Hardware(I/O disco, Ram, aquecimento... etc) distribuída pelas aplicações que estão rodando...

Em relação as querys pesadas, de uma olhada na query, veja o mapa de execucao, da uma olhada nos indices...

Veja como estão distribuídas as tablespaces...

 

Isso só para começar a identificar os problemas...

 

Mas se voce quer uma solução imediata?

Compra mais Hardware e aumente a banda da rede... =P

Assim voce já vai ganhar uns meses...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Relatórios que precisem de dados consolidados e que sejam muito pesados podem ter como solução o uso de base consolidadas, processos noturnos (jobs,cron etc) geram as bases consolidadas e os relatórios diurnos leem destas bases.

 

Mas o caminho em geral e este , rever as queries, ver se não faltam índices, tentar rodar as queries localmente no servidor para descaertar problemas na rede.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, obrigado pelas respostas.

 

Minha preocupação é com estas temp tables.

 

Não sei se é muito custoso pro banco de dados criar várias temps simultaneamente.

 

Bom, vou seguindo por aqui na busca pelas retenções...rs

 

Muito obrigado!

 

Ademir Morgado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como esta configurado este servidor?

O TEMPDB esta em disco separado? Os discos estao em Raid oq?

 

Abçs

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá A.Jr.

 

O servidor está configurado assim:

 

Windows Server 2003 32-Bit

RAM 4GB

RAID5 - C: => TempDB e Logs

Storage Protocolo iSCSI - RAID10 - E:\ => Dados

 

Abraço.

 

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desconheço sua massa de dados, seu ambiente e o negocio...

Mas tenho duvidas...

 

Não ha possibilidade de montar um ambiente apenas para gerar relatórios?

Não poderia utilizar Cursores não? 2005 já trabalha bem com eles...

E não poderia colocar mais memoria não? (essa duvida é genérica, rsrs)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá A.Jr.

 

O servidor está configurado assim:

 

Windows Server 2003 32-Bit

RAM 4GB

RAID5 - C: => TempDB e Logs

Storage Protocolo iSCSI - RAID10 - E:\ => Dados

 

Abraço.

 

Ademir

Ademir,

voce jah viu os ponteiros da leitura de disco?

E a leitura de memoria?

Voce conhece?

DMV's (Dynamic Management Views)

http://forum.imasters.com.br/topic/395832-dmvs-para-monitoracao-do-uso-de-memoria/

 

Veja como andam os seguintes contadores:

 

Performance Monitor

objeto Memory

  • Available Mbytes
    Pages/sec
  • Buffer Manager
    Buffer Cache Hit Ratio
    Lazy writes/sec
    Page life expectancy
    Target Pages
  • Memory Manager
    Memory Grants Pending
    Total Server Memory
  • Process
    Working Set

Se nao tiver ideia do que seja, pode perguntar :P

O tamanho dos indices? Tamanho do DB, espaco em disco, aplicacao, tudo isso tem que ser analisado!

 

 

Desconheço sua massa de dados, seu ambiente e o negocio...

Mas tenho duvidas...

 

Não ha possibilidade de montar um ambiente apenas para gerar relatórios?

Não poderia utilizar Cursores não? 2005 já trabalha bem com eles...

E não poderia colocar mais memoria não? (essa duvida é genérica, rsrs)

 

Cursor?? O_o

No ambiente que trabalho é proibido até o uso desta palavra.... justamente por causa de performance....

há paleativos para ele...

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desconheço sua massa de dados, seu ambiente e o negocio...

Mas tenho duvidas...

 

Não ha possibilidade de montar um ambiente apenas para gerar relatórios?

Não poderia utilizar Cursores não? 2005 já trabalha bem com eles...

E não poderia colocar mais memoria não? (essa duvida é genérica, rsrs)

 

Olá,

 

Este banco tem 115Gb, com informações deste Jan/2008.

 

Quanto ao ambiente, estamos pensando nesta possibilidade.

 

E a memória, como o Win é 32-Bit ele só reconhece até 4Gb.

 

Abraço

 

Ademir

 

Olá A.Jr.

 

O servidor está configurado assim:

 

Windows Server 2003 32-Bit

RAM 4GB

RAID5 - C: => TempDB e Logs

Storage Protocolo iSCSI - RAID10 - E:\ => Dados

 

Abraço.

 

Ademir

Ademir,

voce jah viu os ponteiros da leitura de disco?

E a leitura de memoria?

Voce conhece?

DMV's (Dynamic Management Views)

http://forum.imasters.com.br/topic/395832-dmvs-para-monitoracao-do-uso-de-memoria/

 

Veja como andam os seguintes contadores:

 

Performance Monitor

objeto Memory

  • Available Mbytes
    Pages/sec
  • Buffer Manager
    Buffer Cache Hit Ratio
    Lazy writes/sec
    Page life expectancy
    Target Pages
  • Memory Manager
    Memory Grants Pending
    Total Server Memory
  • Process
    Working Set

Se nao tiver ideia do que seja, pode perguntar :P

O tamanho dos indices? Tamanho do DB, espaco em disco, aplicacao, tudo isso tem que ser analisado!

 

 

 

Desconheço sua massa de dados, seu ambiente e o negocio...

Mas tenho duvidas...

 

Não ha possibilidade de montar um ambiente apenas para gerar relatórios?

Não poderia utilizar Cursores não? 2005 já trabalha bem com eles...

E não poderia colocar mais memoria não? (essa duvida é genérica, rsrs)

 

Cursor?? O_o

No ambiente que trabalho é proibido até o uso desta palavra.... justamente por causa de performance....

há paleativos para ele...

 

Abçs

 

Olá,

 

Quanto aos indicadores, estou com o pessoal de infra envolvido também. E segundo eles tanto o I/O e memória estão normais...

 

Sobre os contadores, vou pesquisar e posto aqui.

 

Obrigado.

 

Seguem os contadores:

 

Performance Monitor

 

Objeto Memory

•Available Mbytes - Last: 1235 Average: 1218 Minimum: 1235 Maximum: 1236 Duration: 1:40

Pages/sec - Last: 0,000 Average: 0,354 Minimum: 0,000 Maximum: 9,000 Duration: 1:40

 

•SQL Server: Buffer Manager

Buffer Cache Hit Ratio - Last: 99,732 Average: 99,791 Minimum: 99,500 Maximum: 99,890 Duration: 1:40

Lazy writes/sec - Last: 0,999 Average: 2,635 Minimum: 0,000 Maximum: 21,915 Duration: 1:40

Page life expectancy - Last: 6 Average: 6 Minimum: 5 Maximum: 10 Duration: 1:40

Target Pages - Last: 204800 Average: 204800 Minimum: 204800 Maximum: 204800 Duration: 1:40

 

•SQL Server: Memory Manager

Memory Grants Pending - Last: 0,000 Average: 0,000 Minimum: 0,000 Maximum: 0,000 Duration: 1:40

Total Server Memory - Last: 1638400 Average: 1638400 Minimum: 1638400 Maximum: 1638400 Duration: 1:40

 

•Process

Working Set - Last: 2525143040 Average: 2525105766 Minimum: 2524987392 Maximum: 2525151232 Duration: 1:40

 

Não consegui analisar estes dados, você pode me orientar?

 

Obrigado.

 

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguem os contadores:

 

Performance Monitor

 

Objeto Memory

•Available Mbytes - Last: 1235 Average: 1218 Minimum: 1235 Maximum: 1236 Duration: 1:40

Pages/sec - Last: 0,000 Average: 0,354 Minimum: 0,000 Maximum: 9,000 Duration: 1:40

 

•SQL Server: Buffer Manager

Buffer Cache Hit Ratio - Last: 99,732 Average: 99,791 Minimum: 99,500 Maximum: 99,890 Duration: 1:40

Lazy writes/sec - Last: 0,999 Average: 2,635 Minimum: 0,000 Maximum: 21,915 Duration: 1:40

Page life expectancy - Last: 6 Average: 6 Minimum: 5 Maximum: 10 Duration: 1:40

Target Pages - Last: 204800 Average: 204800 Minimum: 204800 Maximum: 204800 Duration: 1:40

 

•SQL Server: Memory Manager

Memory Grants Pending - Last: 0,000 Average: 0,000 Minimum: 0,000 Maximum: 0,000 Duration: 1:40

Total Server Memory - Last: 1638400 Average: 1638400 Minimum: 1638400 Maximum: 1638400 Duration: 1:40

 

•Process

Working Set - Last: 2525143040 Average: 2525105766 Minimum: 2524987392 Maximum: 2525151232 Duration: 1:40

 

Não consegui analisar estes dados, você pode me orientar?

 

Obrigado.

 

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ademir,

 

É extenso o assunto, mas leia tudo. É, eu sei que dá preguiça, mas nao tem como resumir.

 

O Performance Monitor é uma ferramenta disponível no próprio Windows. Ele permite capturar informações sobre o hardware, sistema operacional e todos os aplicativos que possuem contadores. Os dados são exibidos através de uma interface gráfica em diversos formatos (gráficos e relatório) ou podem ser capturados em log para serem analisados posteriormente.

 

Em seguida irei listar os principais objetos e contadores que devem ser analisados para monitoramento de memória de um servidor SQL Server. Os valores de referência são descritos os que são normalmente utilizados, mas podem variar dependendo do ambiente.

 

O objeto Memory está relacionado a memória do sistema operacional do servidor, os principais contadores a serem analisados são:

 

• Available Mbytes: indica a quantidade de memória disponível em MB no momento. O ideal é que este contador esteja com valor acima de 100 MB. Valores inferiores podem indicar a necessidade de mais memória RAM.

• Pages/sec: indica o número de páginas que são páginadas na memória para o disco por segundo. O ideal é que este a média deste contador esteja sempre próximo de zero em um intervalo de 24 horas e em situações normais. Picos ocasionais podem aumentar este valor. Se a média do contador for maior que 20, o servidor precisará de mais memória RAM.

 

O objeto Buffer Manager está relacionado a instância SQL Server, cada instância SQL Server terá objetos próprios. Os principais contadores a serem analisados são:

 

• Buffer Cache Hit Ratio: indica o percentual de páginas de foram atendidas pelo buffer pool. O ideal é que este valor seja igual ou superior a 99%. Valores inferiores podem indicar memória insuficiente para a instância SQL Server.

• Checkpoints Page/sec: indica o número de páginas limpas no disco por segundo. O valor ideal é abaixo de 50. Se este valor estiver constantemente alto, pode indicar que a instância SQL Server precisa de mais memória.

• Lazy writes/sec: indica o número de vezes por segundo que o lazy write elimina as páginas do buffer cache. Se este valor estiver maior que 20, pode indicar que a instância SQL Server precisa de mais memória.

• Page life expectancy: inidica a expectativa de vida (em segundos) de uma página de dados na memória. O ideal é que este valor seja sempre superior a 300 segundos. Valores inferiores podem indicar necessidade de memória para a instância SQL Server.

• Target Pages: indica o número ideal de páginas no buffer pool.

• Total Pages: indica o número de páginas que estão no buffer pool no momento. Este valor deve ser menor o valor do contador Target Pages.

 

O objeto Memory Manager também está relacionado a cada instância SQL Server. Os principais contadores a serem analisados são:

 

• Memory Grants Pending: indica o número de processos esperando na área de trabalho da memória. O ideal é este valor fique próximo de zero. Caso os valores sejam constantemente altos, deve-se certifica-se de que o problema está relacionado a insuficiencia de memória e não a objetos dos bancos de dados.

• Target Server Memory: indica o total de memória que a instância SQL Server pode utilizar.

• Total Server Memory: indica o total de memória que a instância SQL Server está utilizando no momento. Se este valor for igual ou maior que o valor do Target Server Memory, pode indicar a necessidade de mais memória para a instância SQL Server.

 

O objeto Process relacionado ao servidor que hospeda a instância SQL Server. O principal contador a ser analisado é:

 

• Working Set: indica o tamanho do conjunto da carga de trabalho dos processos em bytes na memória física do servidor. Caso este valor permaneça sempre abaixo do mínimo de memória configurada para instância SQL Server, isso indica que a instância está configurada com mais memória do que realmente precisa

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

A.Jr,

 

Vou cruzar as informações que coletei com a que você passou agora!

 

Obrigado pela atenção, paciencia e explicações!

 

Abraço

 

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Pela analise do Performance Monitor acredito que precisamos de mais memória para a instância.

A maioria dos contadores coletados confrontados com a descrição dos contadores sugere este aumento.

 

A todos muito obrigado mesmo pelas explicações, estas informações serão guardadas e muito utilizadas por mim e pela equipe aqui da empresa!

 

Abraço!

 

Ademir

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.