O acesso ao SQL Server é lento em máquinas clientes

1

Eu estava em um site de clientes hoje e instalei alguns softwares personalizados que acessam um banco de dados do SQL Server 2005 que reside em um servidor no site do cliente.

O software roda bem quando executado diretamente no servidor, o problema é quando o software é executado nas máquinas clientes, qualquer coisa que envolva acessar o banco de dados SQL tritura o computador por alguns segundos. O uso da CPU em máquinas cliente e servidor é baixo, o uso de memória em ambos parece ser bom.

Outras funções nas máquinas clientes parecem ser rápidas o suficiente, isto é. internet, excel, palavra etc.

O software personalizado está instalado em vários outros sites de clientes diferentes e a velocidade de acesso do SQL não foi um problema, por isso tenho 99% de certeza de que não está relacionado a software. Ambas as máquinas clientes e o servidor estão em torno de 3 a 4 anos, mas tiveram um formato completo e foram reinstalados nos últimos 6 meses.

Todas as 3 máquinas são bastante idênticas em termos de hardware:
Pentium 4 2,66 GHz 1GB de RAM (2GB no servidor)
Windows XP (a atualização automática está ativada, portanto presumo que os patches estejam atualizados)
Tudo conectado a uma rede de 100MB

Alguém tem alguma idéia do que poderia fazer com que o acesso SQL da máquina cliente ficasse lento ou que ferramentas (de preferência livres) eu poderia usar para tentar diagnosticar o problema?

    
por Zordey 05.08.2010 / 20:44

3 respostas

1

Graças às postagens acima para me ajudar a reduzir o problema (não tenho a reputação de aprová-las :()

Depois de muita confusão com as configurações etc. Eu, apenas por curiosidade, mudei a string de conexão do SQL Server nas máquinas clientes de referenciar o servidor usando seu nome de host para usar seu IP. Isso resolveu imediatamente o problema e tudo está correndo muito bem.

Suponho que isso se deva ao fato de o 'servidor' não estar realmente executando um sistema operacional de servidor (é apenas outra máquina na rede executando o XP), portanto não há servidor DNS / WINS apropriado para fazer a tradução do nome do host?

De qualquer forma está funcionando agora, Obrigado pela ajuda.

    
por 06.08.2010 / 17:00
1

Como você está dizendo que a CPU e a memória parecem boas, eu observo o fio e as consultas que o cliente está pedindo ao servidor para executar.

No cliente, eu seria um jogo para dar uma chance ao Wireshark e ver como é a conversa entre o cliente e o servidor (latência, retransmissões etc.). No entanto, acho que não limitaria minha conversa apenas ao cliente e ao servidor, durante as primeiras capturas no cliente, para o caso de o cliente estar emitindo alguns outros pacotes (solicitações falsas de resolução de nomes, tentativas de conexão a outros serviços, etc.) que podem lhe dar uma pista.

No servidor, um rastreamento do SQL Server Profiler pode fornecer algumas informações de baixo nível sobre o que o cliente está solicitando e como o servidor está respondendo. A Microsoft fornece um documento de instruções básico para você começar.

    
por 05.08.2010 / 20:50
1

Pode ser que os clientes tentem se conectar primeiro em um protocolo que o servidor não está escutando. Por exemplo, os clientes tentam os primeiros pipes de rede sobre o SMB e, quando isso expira, eles tentam o TCP (esse é o comportamento padrão, btw). Se o servidor não estiver escutando em netpipes ou a infra-estrutura NetBIOS / SMB no cliente tiver problemas, as conexões parecerão extremamente lentas. Quando você se conecta ao servidor, ele se conecta diretamente com a memória compartilhada e é bem-sucedido imediatamente.

Consulte Configurando os protocolos de rede do cliente para saber como (globalmente) alterar as configurações de rede no máquinas clientes. Ou tente usar uma cadeia de conexão que imponha um protocolo específico, como datasource=tcp:hostname,port . Além disso, verifique a Configuração de rede do servidor para ver quais protocolos o servidor está escutando ativamente.

    
por 06.08.2010 / 00:31