Verstehen und Analysieren von Proxyserver-Timeouts

Kategorien anzeigen

Verstehen und Analysieren von Proxyserver-Timeouts

9 min gelesen

Einleitung / Intro #

Ein Proxy-Dienst ist eine Software, die die Verbindungen von Clients zu einem oder mehreren Diensten transparent verwaltet und erweiterte Daten- oder Verbindungsverwaltung auf Anwendungsebene (Schicht 7 im OSI-Modell) ermöglicht. Dazu stellt der Proxy-Dienst eine Verbindung zum Client und eine weitere zum Server her, um eine nahtlose Konnektivität zwischen beiden zu gewährleisten.

Bei der Implementierung von Load Balancing über einen Proxy-Dienst (der effektiv als Reverse-Proxy fungiert) ist es wichtig, Timeouts anzupassen, um reibungslose Verbindungen zu gewährleisten. Standard-Timeout-Werte reichen möglicherweise nicht aus, abhängig von den Eigenschaften der Clients oder Anwendungsdienste. Alle Timeout-bezogenen Fehler werden in den Systemprotokollen unter / var / log / syslog, weshalb es wichtig ist, diese Datei auf mögliche Probleme zu überprüfen.

Dieser Artikel bietet Einblicke in die Analyse und Identifizierung häufiger Timeout-Probleme bei Proxyservern. Entscheidend ist, ob die Timeouts auf der Backend- oder der Client-Seite auftreten. Sobald diese Unterscheidung getroffen ist, können entsprechende Timeout-Anpassungen vorgenommen werden.

Backend-seitige Timeouts #

Wenn es auf der Backend-Seite zu Timeouts kommt, werden entsprechende Meldungen wie folgt angezeigt:

21. Aug. 09:23:06 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7ff830b85700) Fehler beim Kopieren des Servers, Fortsetzung: Zeitüberschreitung der Verbindung. 21. Aug. 09:23:06 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.11:443, (7ff832d8b700) Fehler beim Kopieren des Servers, Fortsetzung: Zeitüberschreitung der Verbindung. 21. Aug. 09:23:16 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443 (7ff799926700) Fehler beim Kopieren des Servers, Fortsetzung: Verbindungs-Timeout, 21. Aug. 09:23:18 noid-ee-01 pound: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7ff830bc6700) Fehler beim Kopieren des Servers, Fortsetzung: Unterbrochene Pipe, 21. Aug. 09:23:19 noid-ee-01 pound: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:444, (7f15f5a8c700) connect_nb: Polling-Timeout, 21. Aug. 09:23:24 noid-ee-01 pound: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.11:443, (7ff79a9a7700) Fehler beim Kopieren des Servers, Fortsetzung: Zeitüberschreitung der Verbindung, 21. August, 09:23:24 noid-ee-01 pound: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7ff79a28b700) Fehler beim Kopieren des Servers, Fortsetzung: Zeitüberschreitung der Verbindung

Diese Backend-Timeout-Fehler geben die relevanten Bauernhof, und Backend mit dem Fehler verbunden. Diese Informationen identifizieren eindeutig das bzw. die mit dem Problem verbundenen Backends. Wenn mehrere Farmen, Dienste oder Backends vom Timeout-Problem betroffen sind, müssen möglicherweise zusätzliche Informationen gesammelt werden, um mögliche Netzwerkprobleme zu untersuchen.

Durch das Aktivieren von Farmprotokollen können Fälle aufgedeckt werden, in denen ein bestimmtes Backend zunächst schnell reagiert, aber plötzlich ein Timeout-Problem auftritt, wie im folgenden Protokollauszug dargestellt:

25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, my.service.com 185.106.182.130 - - [25/Jan/2024:19:57:04 +0000] "GET /myserv/ HTTP/1.1" 200 9 "" "Mozilla/3.0 (kompatibel; ...)" (noid-service-01 -> 10.100.200.10:443) 0.039 Sek.
25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, my.service.com 88.111.111.111 - - [25/Jan/2024:19:57:04 +0000] "GET /myserv/ HTTP/1.1" 200 9 "" "Mozilla/3.0 (kompatibel; ...)" (noid-service-01 -> 10.100.200.10:443) 0.035 Sek.

25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7fcd8eb0f700) connect_nb: Zeitüberschreitung bei der Umfrage
25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7fcd8eb0f700) Backend 10.100.200.10:443 Verbinden: Verbindungs-Timeout 25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, (7fcd8eb0f700) BackEnd 10.100.200.10:443 tot (getötet) in Farm: „noid-proxy-farm-01“, Dienst: „ocp-ocuco-com“ 25. Januar 19:57:04 noid-ee-01 Pfund: noid-proxy-farm-01, Dienst noid-service-01, Backend 10.100.200.10:443, (7fcd8eb0f700) BackEnd tot (beendet)

Dieses Verhalten kann darauf hinweisen, dass das Backend sein Verbindungslimit erreicht hat und keine weiteren Verbindungen mehr möglich sind. Alternativ könnte es darauf hindeuten, dass das Backend Verbindungen nicht schnell genug freigibt, was zu einem Engpass führt. Um dieses Problem zu beheben, empfiehlt es sich, das Backend zu überwachen und Optimierungen vorzunehmen, z. B. mehr Verbindungen zuzulassen oder den Dienst durch Hinzufügen zusätzlicher Backends zu skalieren.

Wenn nur bestimmte Backends innerhalb desselben Dienstes Timeout-Probleme aufweisen, liegt dies möglicherweise an einer langsamen Anwendungsbereitstellung oder Netzwerkproblemen. Lösungen oder Maßnahmen zur Problembehebung für diese Fehler finden Sie weiter unten.

Clientseitige Timeouts #

Umgekehrt manifestieren sich Client-Timeouts in der syslog im folgenden Format:

18. Aug. 07:31:38 noid-ee-01 pound: noid-proxy-farm-01, (7f8862187700) Fehler beim Lesen von 12.91.1.78: Zeitüberschreitung der Verbindung. 18. Aug. 07:31:43 noid-ee-01 pound: noid-proxy-farm-01, (7f8863c71700) Fehler beim Lesen von 12.2.1.105: Zeitüberschreitung der Verbindung. 18. Aug. 07:32:03 noid-ee-01 pound: noid-proxy-farm-01, (7f886275e700) Fehler beim Lesen von 12.41.1.58: Zeitüberschreitung der Verbindung. 18. Aug. 07:32:07 (01f01d7) Fehler beim Lesen von 8880: Verbindungs-Timeout 84700. Aug. 12.88.1.67:18:07 noid-ee-32 pound: noid-proxy-farm-16, (01f01) Fehler beim Lesen von 7: Verbindungs-Timeout

Fehlen in den Protokollen Farm- oder Dienstinformationen, deutet dies darauf hin, dass die Client-Anfrage den Proxy nicht korrekt erreicht hat. Der Client benötigt längere Zeit für die Ausführung der HTTP-Anfrage, sodass der Proxy den anfordernden Dienst nicht erkennt. Anhand der IP-Adressen lässt sich erkennen, ob das Problem ein internes Netzwerk, externe Clients oder Clients betrifft, die über eine bestimmte Firewall ankommen.

Darüber hinaus ist es für externe Kunden entscheidend, deren Legitimität zu überprüfen. Die Nutzung der Dienste von AbuseIP kann bei der Erfassung solcher Informationen hilfreich sein.

Um Client-Timeout-Probleme zu beheben, ist es außerdem wichtig zu überprüfen, ob der Proxy Verbindungen vorzeitig beendet. Stellen Sie sicher, dass die Summe aus Verbindungs-Timeout und Backend-Timeout kleiner ist als das Client-Timeout, um eine vorzeitige Trennung durch den Proxy zu vermeiden.

Nachfolgend finden Sie Informationen zum Beheben oder Abschwächen dieser Fehler.

Beheben von Timeouts auf der Backend-Seite #

Überprüfung der Netzwerkschicht #

Zunächst ist es wichtig, die Stabilität der Netzwerkschicht zu bestätigen und sicherzustellen, dass keine doppelten oder verlorenen Pakete vorhanden sind oder die Latenzzeit stark schwankt. Führen Sie die folgenden Schritte aus, um die Netzwerkschicht zu überprüfen:

1. Führen Sie einen Ping vom Load Balancer zum Backend aus und lassen Sie ihn einige Minuten laufen.

root@noid-ee-01:~# ping 10.100.200.10

2. Beobachten Sie die Ping-Antworten während der Ausführung:

PING 10.100.200.10 (10.100.200.10) 56(84) Bytes Daten. 64 Bytes von 10.100.200.10: icmp_seq=1 ttl=64 Zeit=0.395 ms 64 Bytes von 10.100.200.10: icmp_seq=2 ttl=64 Zeit=0.626 ms 64 Bytes von 10.100.200.10: icmp_seq=3 ttl=64 Zeit=0.178 ms [...] 64 Bytes von 10.100.200.10: icmp_seq=21 ttl=64 Zeit=0.502 ms 64 Bytes von 10.100.200.10: icmp_seq=22 ttl=64 Zeit=0.638 ms 64 Bytes von 10.100.200.10: icmp_seq=23 ttl=64 Zeit=0.573 ms ^C --- 10.100.200.10 Ping-Statistiken ---
23 Pakete gesendet, 23 empfangen, 0 % Paketverlust, Zeit 140 ms RTT min/avg/max/mdev = 0.178/0.539/0.854/0.141 ms

Diese Antwort zeigt an, dass das Netzwerk stabil ist und keine Pakete verloren gehen oder Latenzprobleme auftreten. Stellen Sie sicher, dass während des Ping-Tests keine Anomalien auftreten, um die Zuverlässigkeit der Netzwerkschicht zu bestätigen.

Zusätzlich können Sie durch Ausführen eines TCPdumps bei erneutem Auftreten des Problems den Netzwerkverkehr analysieren und den genauen Zeitpunkt ermitteln, an dem es zu Kommunikationsverzögerungen kommt oder bestimmte Pakete fehlen. Verwenden Sie dazu den folgenden Befehl:

root@noid-ee-01:~# tcpdump -i beliebiger TCP-Port PORT und Host BACKENDIP -w /tmp/capture.pcap

Dieser Befehl generiert eine Datei mit dem Namen /tmp/capture.pcap, die mit Wireshark analysiert werden kann. Seien Sie vorsichtig, da diese Datei schnell anwachsen kann, wenn sie eine große Menge an Datenverkehr erfasst.

Proxy-Timeout-Optimierung #

Anpassen verschiedener Timeouts in der Erweiterte Farmkonfiguration Ermöglicht es uns, das Proxy-Verhalten an die Bedürfnisse unserer Anwendungsserver anzupassen, insbesondere wenn diese für jede Anfrage zusätzliche Zeit benötigen oder die Netzwerkleistung niedrig ist. Beachten Sie die folgenden Empfehlungen:

Timeout der Backend-Verbindung: Stellen Sie die maximale Zeit für eine verbinden () Operation gegen das ausgewählte Backend. Wenn Nachrichten wie „connect_nb: Zeitüberschreitung bei der Umfrage“ Wenn Zeitüberschreitungen erkannt werden, sollten Sie diesen Wert von den standardmäßigen 20 Sekunden auf 30 oder 40 Sekunden erhöhen. Erhöhen Sie den Wert schrittweise basierend auf den beobachteten Ergebnissen. Bedenken Sie dabei, dass das Timeout möglicherweise ein zugrunde liegendes Problem an anderer Stelle behebt.

Backend-Antwort-Timeout: Passen Sie diesen Wert an, wenn die Meldung „Fehler beim Kopieren des Servers, Fortsetzung: Zeitüberschreitung bei der Verbindung“ wird erkannt. Erhöhen Sie diesen Wert schrittweise, bis eine Abnahme solcher Meldungen zu beobachten ist. Achten Sie jedoch darauf, diesen Wert nicht übermäßig zu erhöhen, da dies zugrunde liegende Probleme auf der Backend-Seite verschleiern könnte. Der Standardwert beträgt 45 Sekunden. Erhöhen Sie ihn daher auf 60 Sekunden oder mehr und achten Sie dabei auf Fehlerfreiheit.

Häufigkeit der Überprüfung wiederauferstandener Backends: Wenn aufgrund von Netzwerk- oder Anwendungsserverproblemen, die zeitweise HTTP 503-Fehler verursachen (kein Service-Backend verfügbar), höhere Timeouts erforderlich sind, sollten Sie diesen Wert von 10 auf 5 Sekunden reduzieren. Diese Anpassung trägt dazu bei, Fehlalarme bei der Kennzeichnung von Backends als ausgefallen aufgrund von Timeouts zu reduzieren. Analysieren Sie, ob die Timeouts im normalen Rahmen liegen, da der Proxy-Load Balancer in diesem Zusammenhang bestimmte Probleme beheben kann.

Bitte führen Sie eine gründliche Analyse durch, um festzustellen, ob Timeouts normal sind. Der Proxy-Load Balancer kann bestimmte Timeout-bezogene Probleme beheben und mindern.

Ausführlichere Informationen finden Sie im folgenden Artikel:

https://www.relianoid.com/resources/knowledge-base/lslb/enterprise-edition-v6-2-administration-guide-lslb-farms-update-http-profile/

Konfigurieren von Integritätsprüfungen #

Farm Guardian dient dazu, Backends je nach Verfügbarkeit zu aktivieren oder zu deaktivieren. In diesem Szenario ermöglicht uns die Nutzung von Farm Guardian, die tatsächliche Verfügbarkeit von Backends zu ermitteln. Dieser Prozess läuft unabhängig und parallel zum Proxy ab und ermöglicht es uns zu überprüfen, ob Backend-Probleme tatsächlich zu einem Engpass auf der Backend-Seite führen. Darüber hinaus können wir durch die Untersuchung der Backend-Statistiken, wenn ein Backend als ausgefallen markiert ist, die Anzahl der von diesem Server verarbeiteten Verbindungen ermitteln und so die Verbindungslimits jedes Backends identifizieren.

Durch die Konfiguration einer FarmGuardian-Prüfung für TCP können wir Probleme beim Handshake mit den Backends identifizieren, die auf einen Engpass auf System- oder Webserverebene hinweisen könnten. Die Konfiguration einer FarmGuardian-Prüfung für HTTP hingegen hilft, Probleme auf Anwendungsebene mit den Backends zu identifizieren und weist auf potenzielle Engpässe in der Anwendungs- oder Datenbankebene hin.

Beheben von clientseitigen Timeouts #

Überprüfung der Netzwerkschicht #

Um die Stabilität des Netzwerks zu überprüfen, führen Sie einen Ping-Test von einem anderen Server oder Computer an die IP-Adresse der für die Lastenausgleichsfarm konfigurierten virtuellen IP-Adresse aus. Dies gewährleistet eine externe Perspektive und hilft, die Zuverlässigkeit des Netzwerks zu bestätigen.

Überprüfung legitimer Kunden #

Setzen Sie sichere Tools ein, um festzustellen, ob Timeout-Probleme mit legitimen Clients, Robotern oder potenziellen Angreifern zusammenhängen. Wenn die Timeouts auf nicht autorisierte Benutzer zurückzuführen sind, implementieren Sie IPDS-Blacklists und/oder DoS-Schutz, um Ihre Dienste zu schützen und sicherzustellen, dass die Bereitstellung nur an berechtigte und authentische Benutzer erfolgt.

Proxy-Timeout-Optimierung #

Darüber hinaus sollten Sie die Proxy-Timeouts an die Art der Clients anpassen, die über den Load Balancer auf Ihre Dienste zugreifen. Wenn beispielsweise mobile Clients, Firewall-Probleme oder langsame Netzwerke zu längeren Antwortzeiten führen, optimieren Sie die Clientanforderungs-Timeout Option in der Erweiterte Einstellungen Ihrer LSLB-Farm. Der Standardwert ist 30 Sekunden; Sie können den Wert je nach Ihren spezifischen Anforderungen auf 60 Sekunden oder mehr erhöhen. Der Client-Timeout-Wert sollte die Summe aus Verbindungs-Timeout und Backend-Antwort-Timeout überschreiten.

Ausführlichere Informationen finden Sie im folgenden Artikel:

https://www.relianoid.com/resources/knowledge-base/lslb/enterprise-edition-v6-2-administration-guide-lslb-farms-update-http-profile/

📄 Laden Sie dieses Dokument im PDF-Format herunter #

    EMAIL: *

    Erhöhte Sicherheit. Geringerer Aufwand. Nachhaltiger Erfolg. BetterDocs