SQL Server lento mas CPU normal

3

Estamos tendo alguns problemas com o SQL Server hospedado em um servidor virtual. Ocasionalmente, temos períodos curtos em que até mesmo a execução de uma seleção simples leva alguns minutos. Durante esse período, o uso da CPU e da memória no servidor parece normal. Realizamos algum monitoramento básico do servidor usando o monitor de desempenho, mas isso não descobriu nada e estamos sem ideias. Qual seria o próximo passo no diagnóstico do problema?

EDITAR:

Os únicos sinais do problema que estamos vendo no servidor são as mensagens do Event Log informando que "o SQL Server encontrou x ocorrências de solicitações de E / S que levam mais de 15 segundos para serem concluídas"

    
por Rob Bell 12.06.2009 / 12:29

7 respostas

3

Parece-me um típico problema de I / O (uh oh, é o que você já postou):)

Eu não uso o Windows normalmente, mas os problemas básicos são os mesmos:

  • acontece aleatoriamente ou em determinados momentos
    • você está executando um backup no tempo especificado
    • existem trabalhos em lote
    • existem trabalhos em lote que você não conhece (sim checar duplamente, pode ser algum cara / garota enviando "trabalhos em lote" de um cliente de alguma maneira automatizada)
    • alguma pessoa de marketing / dev executando uma consulta desagradável que precisa passar por todo o disco
    • leva algum tempo para que as pessoas geralmente matem o cliente antes que a consulta termine e inicie a outra, criando assim ainda mais I / O
  • Seus discos estão saudáveis?
  • Existem outros serviços de E / S ligados em execução na máquina
  • Rede? (que não deve ser o problema de acordo com a mensagem de erro, mas Murphy nunca dorme)
  • Quais são os dados históricos sobre o uso do servidor?
  • O sistema de arquivos está ficando cheio?
  • Alguém (intencionalmente ou não) reagiu a prioridade?
por 12.06.2009 / 14:59
2

Bem, a lentidão deve ser a CPU ou o gargalo do disco, ou algum tipo de tempo de espera, como esperar por um recurso de rede indisponível. Você menciona que a CPU está bem, você verificou o Comprimento Médio da Fila de Disco do PerfMon e os Bytes de Disco / s? Há algum erro relacionado no log de eventos?

FWIW Tenho vários servidores SQL2005 (Standard e Workgroup) em execução nas VMs do Hyper-V e eles funcionam bem, por isso não há nenhum problema inerente.

JR

    
por 12.06.2009 / 12:40
2

O mais provável é que o problema seja a contenção de recursos entre essa VM e os outros no mesmo host físico, ou há uma atividade principal no próprio host (muito I / O devido a processos de backup em execução?).

Outra possibilidade é que seu servidor virtual esteja ocupado fazendo algo com E / S de disco intensivo (outras, maiores ou mais complexas, consultas SQL em execução ao mesmo tempo?) e sua seleção simples também está tentando ler do disco. O bloqueio de processos devido à contenção de E / S não será exibido como sendo ocupado pela CPU. Embora, a menos que sua seleção simples seja simples, mas-consultas-muitas-linhas, eu não esperaria que levasse "vários minutos" mesmo nessas circunstâncias, portanto é mais provável que haja contenção de recursos de host (provavelmente largura de banda de E / S).

    
por 12.06.2009 / 12:42
1

Se houver algo que atrasa o SQL, é um disco lento ou não está alinhando as partições corretamente. Eu executo uma instância do SQL 2008 dentro de uma VM com uma SAN Equallogic para disco e ela supera qualquer uma das nossas caixas físicas de SQL.

    
por 12.06.2009 / 14:58
0

Se o servidor virtual não indicar nenhum problema, é provável que o servidor host esteja com problemas. Esses problemas são frequentemente vistos onde as pessoas colocam muitos cpus virtuais em cada servidor virtual, o que aumenta a chance de bloquear a CPU dos hosts físicos.

    
por 12.06.2009 / 12:34
0

Eu imagino que a resposta já esteja dentro de uma das outras respostas. No entanto, também vale a pena executar EXEC sp_Who2 e garantir que suas "consultas simples" não sejam bloqueadas por algum tipo de atualização demorada ou semelhante.

Eu fui pego antes com tabelas vinculadas do MS Access que têm alguns hábitos de bloqueio horríveis.

    
por 12.06.2009 / 13:37
0

Conte-nos um pouco mais sobre o armazenamento que suporta seu host / sql vm (local, iscsi (hw / sw), nfs, san, sas, sata, fornecedor, etc)? De seu comentário mais recente, que parece um bom caminho para examinar mais de perto.

Deixe-nos saber qual é o seu hipervisor (e potencialmente o SO do host) para que as pessoas possam falar mais diretamente sobre sua situação.

    
por 12.06.2009 / 14:48