Ambiente
Temos uma solução em execução que interage com a API do Twitter. O ponto final da API do Twitter é:
api.twitter.com
Fazemos muitas chamadas para o endpoint, mas estamos atingindo muito raramente os limites de API definidos pelo Twitter.
Presumo que o Twitter tenha um balanceador de carga configurado nessa URL e redirecione internamente para máquinas diferentes.
A solução é um aplicativo .Net, parcialmente um executável que faz pesquisa de dados e um aplicativo da Web que é usado para responder e publicar Tweets.
O problema
Uma vez por semana (às vezes mais) por algumas horas, obtemos a seguinte exceção registrada nos arquivos de log de nosso aplicativo executável e da web.
Inner Exception : System.Net.WebException: Unable to connect to the remote
server ---> System.Net.Sockets.SocketException: 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 185.45.5.33:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at Hammock.Web.WebQuery.ExecuteGetDeleteHeadOptions(WebRequest request, WebException& exception) in f:\src\hammock\src\net35\Hammock\Web\WebQuery.cs:line 1021
... Ommited rest of exception ...
Quando eu faço um NSLOOKUP
do próprio servidor, tenho o seguinte resultado
>nslookup api.twitter.com
Server: 4201082000200000000g00g021.ip.ssc.net
Address: 2001:820:2::9:218
Non-authoritative answer:
Name: api.twitter.com
Addresses: 185.45.5.33
185.45.5.44
Toda vez que eu fizer essa pesquisa, o 185.45.5.33
servidor defeituoso é listado e há apenas um endereço IP alternativo presente.
Observação: só temos esses dois endereços IP do nosso servidor de produção, de outras máquinas (em diferentes países), o nslookup
retorna pelo menos 4 endereços IP em um intervalo de 199. *.
>nslookup api.twitter.com
Server: kdns1.task.gda.pl
Address: 213.192.64.1
Non-authoritative answer:
Name: api.twitter.com
Addresses: 199.16.156.104
199.16.156.72
199.16.156.231
199.16.156.8
A solução?
Eu tentei durante esses períodos com falhas editar o arquivo C:\Windows\System32\Drivers\etc\hosts
com essa linha
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
185.45.5.44 api.twitter.com
Mas isso não parece funcionar, os problemas continuam. Embora o problema esteja provavelmente nos servidores do Twitter, ele quebra nossa funcionalidade para deixar totalmente de funcionar. Então, precisamos ser mais ativos em vez de esperar até que o Twitter resolva o problema.
Provavelmente, essa não é a melhor maneira de resolver esse problema, mas temos Por enquanto . Nós recrutamos alguém qualificado para esses problemas operacionais, mas ele não vai começar antes de dezembro. Portanto, qualquer conselho gentil para uma pessoa experiente limitada seria muito apreciado por ter uma solução temporária para esse problema.
Alguém tem uma sugestão ou um lead que possa nos ajudar a resolver isso do nosso lado da melhor maneira possível?
Eu não me importo de começar a ler artigos, mas uma pista ou um empurrão na direção certa seria uma grande ajuda.
Obrigado pelo seu tempo