Vermeiden Sie einen fehlerhaften Server hinter dem Load Balancer

Vermeiden Sie einen fehlerhaften Server hinter dem Load Balancer

Umfeld

Wir haben eine Lösung im Einsatz, die mit der Twitter-API interagiert. Der Endpunkt der Twitter-API ist:

api.twitter.com

Wir rufen den Endpunkt häufig auf, stoßen jedoch nur sehr selten auf die von Twitter definierten API-Grenzen.

Ich gehe davon aus, dass Twitter für diese URL einen Load Balancer eingerichtet hat und intern auf verschiedene Rechner umleitet.

Die Lösung ist eine .NET-Anwendung, teilweise eine ausführbare Datei, die Datenabfragen durchführt, und eine Webanwendung, die zum Beantworten und Veröffentlichen von Tweets verwendet wird.

Das Thema

Einmal pro Woche (manchmal öfter) wird für einige Stunden die folgende Ausnahme in den Protokolldateien unserer ausführbaren Datei und Webanwendung protokolliert.

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 ...

NSLOOKUPWenn ich vom Server selbst aus mache, habe ich das folgende Ergebnis

>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

Jedes Mal, wenn ich diese Suche durchführe, 185.45.5.33wird der fehlerhafte Server aufgelistet und es ist nur eine alternative IP-Adresse vorhanden.

Hinweis: Wir haben diese beiden IP-Adressen nur von unserem Produktionsserver. Von anderen Maschinen (in anderen Ländern) werden nslookupmindestens 4 IP-Adressen in einem 199.*-Bereich zurückgegeben.

>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

Die Lösung ?

Ich habe während dieser fehlerhaften Zeiträume versucht, die C:\Windows\System32\Drivers\etc\hostsDatei mit dieser Zeile zu bearbeiten

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
    185.45.5.44     api.twitter.com

Aber das scheint nicht zu funktionieren, die Probleme bestehen einfach weiter. Obwohl das Problem wahrscheinlich auf den Servern von Twitter liegt, beeinträchtigt es unsere Funktionalität so sehr, dass sie überhaupt nicht mehr funktioniert. Wir müssen also proaktiver sein, anstatt zu warten, bis Twitter das Problem löst.

Dies ist wahrscheinlich nicht einmal der beste Weg, dieses Problem zu lösen, aber wir habenZur Zeit. Wir haben jemanden mit Erfahrung für diese Betriebsprobleme eingestellt, aber er wird nicht vor Dezember anfangen. Daher wäre jeder Ratschlag für eine Person mit begrenzter Erfahrung sehr willkommen, um eine vorübergehende Lösung für dieses Problem zu finden.

Hat also jemand einen Vorschlag oder einen Hinweis, der uns dabei helfen könnte, das Problem auf unserer Seite bestmöglich zu beheben?

Ich habe nichts dagegen, mich in die Lektüre von Artikeln zu stürzen, aber ein Hinweis oder ein Anstoß in die richtige Richtung wäre eine große Hilfe.

Vielen Dank für Ihre Zeit

Antwort1

Kurze Antwort: Nein.

Sie können zur Eindämmung von Problemen mit Drittanbietern nur sehr wenig tun, außer Ihre Benutzer darüber zu informieren, dass Upstream-Probleme vorliegen.

Sie könnten beschreibende Fehlermeldungen anzeigen, wie etwa „Bei der Kommunikation mit Twitter ist ein Problem aufgetreten, bitte warten.“ oder den Fehler stillschweigend verwerfen und es nach einer Weile erneut versuchen.

Bei längeren Ausfallzeiten würde ich vorschlagen, Ihren Benutzern global innerhalb der Anwendung einen Hinweis anzuzeigen.

Darüber hinaus bezweifle ich stark, dass die API von Twitter so viele Probleme hat – wahrscheinlich ist Ihre Geschwindigkeit irgendwie begrenzt. Ich würde Ihnen dringend empfehlen, sich an Twitter zu wenden und einen Supportfall zu eröffnen.

verwandte Informationen