Por que recebo tempos limite de conexão para serviços privados no Azure?

2

Parece que estou vendo isso com meu SQL Server e meu conjunto de réplicas do MongoDB. Eu só recebo um punhado por dia, mas ainda me preocupa.

Estou recebendo um tempo limite ao tentar abrir uma nova conexão com o sistema remoto. Isso acontece mesmo quando o sistema remoto está ativo e respondendo. Eu tenho uma única instância do SQL Server e um conjunto de réplicas mongodb de 3 sistemas. Parece acontecer esporadicamente sob cargas moderadas a mais altas.

Estou usando pools de conexão, e os tamanhos devem limitar as conexões (por processo, é claro), nenhum deles deveria estar vendo conexões acima de 1k, da mesma forma que estou vendo os tempos limites tentando se conectar.

O servidor SQL é o windows (é claro), as instâncias do mongodb estão no Ubuntu e os clientes são uma combinação de node.js no linux e no windows, assim como os aplicativos .Net 4.5.

Estou no processo de criar uma arquitetura mais resiliente (tente 3 vezes antes de falhar), da mesma forma que o problema me preocupa.

O que você procuraria em termos de problemas aqui?

    
por Tracker1 09.09.2014 / 00:49

1 resposta

0

A pergunta é antiga e isso pode ser um problema de raiz diferente, mas, como passei mais de uma semana rastreando-a e isso pode ajudar alguém a economizar tempo aqui:

Estou com um problema que apresenta um erro semelhante. depois de entrar em contato com o suporte técnico do azure, seu melhor palpite (eles são não ter certeza ) é que as conexões inativas são mortas por algum proxy entre os aplicativos da web e o servidor. isso acontece depois de cerca de 4 minutos. e de tal maneira que tanto o servidor quanto o cliente não têm idéia de que isso está acontecendo. Quando você tenta usar a conexão nesse estado, o cliente envia pacotes que nunca chegam ao servidor.

Por último, ouvi que isso não será alterado / corrigido. então as opções para evitar isso (em ordem de sanidade) são:

  1. mate as conexões inativas no servidor na marca de ~ 3 minutos.
  2. define o cliente para matar a conexão se estiver inativa na marca de ~ 3 minutos.
  3. verifique se você não tem conexões ociosas fazendo algum trabalho ocupado no cliente.

sua tentativa novamente se a conexão falhar funcionará se ela realmente criar uma nova conexão, caso contrário, ela fará com que o aplicativo espere mais tempo antes de chegar ao mesmo ponto.

Eu atualizarei em uma semana se isso realmente resolver o problema definitivamente.

edite: Uma combinação de matar conexões inativas no cliente e enviar um keep-alive do servidor a cada 2 minutos fez com que esse problema desaparecesse.

    
por 24.04.2015 / 13:54