MS Native SQL driver 10.0 e falha de criação de conexão do SQL Server 2008

1

Estou tentando restringir e depurar erros bastante ilusórios:

State: 08001
Code: 258
Msg: [Microsoft][SQL Server Native Client 10.0]TCP Provider: Timeout error [258]. 

State: HYT00
Code: 0
Msg: [Microsoft][SQL Server Native Client 10.0]Login timeout expired

State: 08001
Code: 258
Msg: [Microsoft][SQL Server Native Client 10.0]Unable to complete login process due to delay in prelogin response

O que eu tentei até agora:

  • certificando-se de que a configuração máxima de RAM está correta e menor de 2 GB do que o tamanho físico da RAM
  • certificando-se de que os encadeamentos de trabalho sejam ilimitados
  • certificando-se de que o limite de conexões remotas é poucas vezes maior do que a carga medida durante as "horas de pico"
  • certificando-se de que o tempo limite de login das conexões remotas esteja definido como 20 segundos
  • certificando-se de que a conexão entre o servidor PHP e o servidor de banco de dados seja estável (traceroute a cada 1 minuto retornou o tempo máximo de conexão de 23ms)
  • certificando-se de que o DNS não é um problema (PHP usa IP do banco de dados para conexão)
  • certificando-se de que o aplicativo tenha credenciais de login exclusivas não compartilhadas com qualquer outro aplicativo
  • certificando-se de que as portas TCP / IP não estejam esgotadas
  • certificando-se de que o login do aplicativo seja um login do SQL para excluir quaisquer problemas com o AD
  • certificando-se de que o pool de conexões esteja em
  • certificando-se de que o tempo limite da consulta esteja definido para um número muito alto de segundos

Nenhuma das ações acima produziu qualquer problema com a configuração de banco de dados / rede, e não há nenhum problema aparente com o código do aplicativo.

Na maioria das vezes, a criação de conexões é bem-sucedida.

P: Quais outros aspectos podem ter impacto na criação da conexão? E produzir tais falhas aparentemente aleatórias?

    
por przemo_li 11.03.2016 / 11:26

1 resposta

3

Verifique se o problema existe no host local do servidor para eliminar a possibilidade de ser hardware de rede causando o tempo limite. Assumindo que o problema desaparece quando você testa o localhost, então pode muito bem estar relacionado à rede.

Você menciona uma latência de 23 ms ao verificar um traceroute a cada 1 minuto. 23 ms não parece uma conexão de rede local e provavelmente tem vários saltos onde você também pode estar vendo uma perda ocasional de pacotes.

Em vez de fazer um traceroute a cada 1 minuto, você deve fazer um ping sem tempo limite, como ping -t servername , e deixá-lo assentar. Então, depois de um tempo, você pode verificar as estatísticas com CTRL + BREAK e procurar por perda de pacotes e / ou flutuações na latência.

Outra opção (a menos que você já esteja fazendo isso) é usar o PDO para se conectar

    
por 17.03.2016 / 06:41