Falhas na conexão aleatória entre IIS8 e MSSQL 2012 no RackSpace Cloud [closed]

4

Plano de fundo

Por anos eu hospedei toda a minha funcionalidade de servidor, incluindo IIS, Apache, MySql e MSSQL em uma única instância de servidor, sim! Como minha base de clientes cresceu, isso levou a Timeouts de SQL persistentes quando o servidor ficou ocupado. No ano passado, reorganizei isso em três servidores, um Windows Server 2012 para IIS + .Net 4, uma instância do CentOS para o Apache e um Windows Server 2012 apenas para o MSSQL 2012. Esses servidores são todos instâncias virtuais na nuvem do RackSpace. e parece estar funcionando sem problemas, exceto por uma coisa ...

Antigamente eu me acostumava a ver erros de comunicação de banco de dados como este ...

SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

ou

System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

Eu entendo isso e lidei com eles, geralmente não os recebo mais.

O problema

O que eu obtenho é um tipo totalmente diferente de erros de tempo de espera, que parecem estar relacionados à rede, como ...

[SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)]

e

[Win32Exception: The specified network name is no longer available] 
[SqlException: A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The specified network name is no longer available.)]

e

System.ComponentModel.Win32Exception (0x80004005): The semaphore timeout period has expired
System.Data.SqlClient.SqlException (0x80131904): A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.) 

e

System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out
System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

e

System.ComponentModel.Win32Exception (0x80004005): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Talvez parte da diferença seja que o IIS8 está me dando mensagens de erro mais específicas do que as versões anteriores (é?) ... mas vários desses erros parecem ser problemas básicos de comunicação entre essas duas instâncias do Windows Server 2012. Eu também notei algumas evidências, que o meu cliente FTP periodicamente não consegue se conectar ao servidor web, e os compartilhamentos de rede do Windows parecem se desconectar de forma intermitente.

Então eu estou preso em um lugar onde eu tenho uma máquina bem lubrificada que inexplicavelmente me falhará várias vezes por dia. Desde que eu sou mais um desenvolvedor do que um administrador de DBA ou servidor ... Estou confuso.

As strings da minha conexão são sempre assim ...

SERVER=LiveDatabase;DATABASE=DataBaseName;UID=userid;PWD=pwd;Pooling=true;Min Pool Size=10;Max Pool Size=500;Connect Timeout=10;

em que LiveDatabase é uma configuração de alias nas máquinas do SQL Server Native Client Configuration. O Alias aponta para um endereço IP local em uma rede privada 192.168.x.x do RackSpace e uma porta não padrão na qual o servidor está esperando conexões.

Esses "tempos limite" estão acontecendo em procedimentos armazenados aparentemente aleatórios, incluindo procedimentos que têm pouca ou nenhuma sobrecarga para o banco de dados.

    
por Ty H. 02.09.2014 / 06:02

1 resposta

0

Todos os problemas parecem estar apontando para problemas de conectividade de rede, mas verificar o seguinte deve revelar algumas dicas.

Verifique e confirme o seguinte:

  • Verificar se as portas corretas estão abertas (1433)
  • Verifique as permissões do usuário do banco de dados
  • Tente um ping contínuo para / do servidor SQL
  • verifique as opções de energia / suspensão do Virtual Nic
  • Veja se o RackSpace pode fornecer quaisquer logs para NICs, comunicações de rede entre servidores [portas, sub-rede, etc.]
  • Verificar logs do Windows e logs do servidor SQL
  • Ative o monitor de atividade no SQL MGMT Studio e tente reproduzir o erro (executando o aplicativo?) e monitore as "Consultas recentes e caras" no Monitor de atividades
por 27.05.2015 / 22:30