Direkt zum Inhalt

Wie behebe ich Verbindungs- und Socket-Timeout-Probleme mit OpenSearch Service?

Lesedauer: 5 Minute
0

Bei meiner Client-Anwendung treten Verbindungs-Timeout- oder Socket-Fehler auf, wenn ich versuche, eine Verbindung zu Amazon OpenSearch Service herzustellen.

Lösung

Probleme mit dem Timeout beheben

Ergreife die folgenden Maßnahmen:

Beheben des „Connection timed out“-Fehlers

Wenn bei der Verbindung ein Timeout auftritt, erhältst du eine Fehlermeldung, die dem folgenden Beispiel ähnelt:

„curl: (7) Failed to connect to vpc-acbdefxyz.us-east-1.es.amazonaws.com port 443: Connection timed out

curl: (28) Operation timed out after 1001 milliseconds with 0 out of 0 bytes received“

Führe je nach verwendetem Domaintyp die folgenden Maßnahmen zur Problembehandlung durch.

Öffentliche Domains

Öffentliche Domains sind über das Internet zugänglich, wenn der Client über Konnektivität oder Routen zum Internet verfügt. Wenn der Client nicht über Konnektivität oder Routen zum Internet verfügt, erhältst du möglicherweise die folgende Ausgabe, wenn du einen telnet- oder curl-Befehl ausführst:

Trying xyz.xyz.xyz.xyz...
telnet: connect to address xyz.xyz.xyz.xyz: Connection timed out

-oder-

*   Trying xyz.xyz.xyz.xyz:443...
* connect to xyz.xyz.xyz.xyz port 443 failed: Operation timed out
* Failed to connect to search-domain-name-someid.aws-region.es.amazonaws.com port 443 after 75243 ms: Couldn't connect to server
* Closing connection 0
curl: (28) Failed to connect to search-domain-name-someid.aws-region.es.amazonaws.com port 443 after 75243 ms: Couldn't connect to server

Um dieses Problem zu lösen, stelle sicher, dass der Client Routen zum Internet hat und ausgehende Anforderungen an den Suchendpunkt nicht blockiert.

Führe den folgenden Befehl aus, um die Verbindung zu testen:

telnet search-domain-name-someid.aws-region.es.amazonaws.com 443

Hinweis: Ersetze search-domain-name-someid durch deinen Domainnamen und aws-region durch deine AWS-Region.

Beispiel für eine erfolgreiche Antwort vom Suchendpunkt:

Trying xyz.xyz.xyz.xyz...
Connected to search-domain-name-someid.aws-region.es.amazonaws.com.
Escape character is '^]'.

Domains innerhalb einer VPC

Bei OpenSearch-Service-Domains, die du in einer Virtual Private Cloud (VPC) erstellst, verfügt jeder Datenknoten in der VPC über eine Elastic-Network-Schnittstelle. Die Netzwerkschnittstellen leiten den Netzwerkdatenverkehr an deine Domain weiter.

Gehe wie folgt vor, um die Konnektivität zwischen den Netzwerkschnittstellen und der Domain zu überprüfen:

  1. Führe einen der folgenden Befehle aus, um die IP-Adressen der Netzwerkschnittstelle in der VPC abzurufen:

    nslookup -q=A vpc-domain-name-id.aws-region.es.amazonaws.com

    -oder-

    dig +short vpc-domain-name-id.aws-region.es.amazonaws.com

    Hinweis: Ersetze domain-name-id durch deinen Domainnamen und aws-region durch deine Region.
    Notiere dir in der Ausgabe die IP-Adresse der Netzwerkschnittstelle.

  2. Um die Verbindung zu testen, führe einen der folgenden Befehle für jede IP-Adresse des Datenknotens aus:

    telnet ip-address 443

    -oder-

    curl -v telnet://ip-address:443

    Hinweis: Ersetze ip-address durch die IP-Adresse der Netzwerkschnittstelle.
    Beispiel für eine Timeout-Antwort:

    Trying xyz.xyz.xyz.xyz...telnet: connect to address xyz.xyz.xyz.xyz: Connection timed out

    Beispiel für eine Erfolgs-Antwort:

    Trying xyz.xyz.xyz.xyz...Connected to xyz.xyz.xyz.xyz.
    Escape character is '^]'.
  3. Wenn bei der Verbindung ein Timeout auftritt, stelle sicher, dass die Sicherheitsgruppen, Routing-Tabellen und die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) der VPC den Zugriff auf die Domain erlauben. Wenn du eine Verbindung zu einigen Netzwerkschnittstellen herstellen kannst, bei anderen jedoch ein Timeout auftritt, erstelle einen AWS-Supportfall.

Hinweis: Du kannst von außerhalb der VPC nicht auf die OpenSearch-Service-Domains zugreifen. Weitere Informationen findest du unter Starten der OpenSearch-Service-Domains innerhalb einer VPC.

Beheben des „HTTP 504 gateway timeout“-Fehlers

Der Load Balancer verteilt den eingehenden Datenverkehr an den Datenknoten. Wenn die OpenSearch-Service-Anforderung innerhalb des Zeitspanne für Inaktivitäts-Timeout keine Bestätigung zurückgibt, schließt der Load Balancer die TCP-Verbindung. Infolgedessen erhältst du eine Fehlermeldung ähnlich dem folgenden Beispiel:

„error msg: org.elasticsearch.client.ResponseException:

method[POST], host[https: //acbdefjhxyz.eu-central-1.es.amazonaws.com:443],

URI [/eks*/_search?typed_keys=true],status line [HTTP/1.1 504 Gateway Time-out]“

In der Regel tritt der Fehler „HTTP 504 Gateway timeout“ auf, wenn OpenSearch Service zu viele gleichzeitige Anforderungen empfängt oder Anforderungen komplex sind. Der Fehler weist nicht unbedingt auf ein Problem im Cluster hin. Weitere Informationen zu Ursachen und Schritten zur Problembehandlung findest du unter HTTP 504: Gateway-Timeout.

Beheben des „SocketTimeoutException“-Fehlers

Socket-Timeout-Fehler treten normalerweise auf, wenn ein Client zu viele Anforderungen oder komplexe Anforderungen sendet. In der OpenSearch-Service-Domain kann es zu einer hohen Ressourcennutzung mit verzögerten Client-Antworten kommen. Beispiel für eine Fehlermeldung:

„j.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-5083 [ACTIVE]

java.net.SocketTimeoutException: Read timed out

Caused by: java.net.SocketTimeoutException: Read timed out“

Gehe wie folgt vor, um dieses Problem zu beheben:

  • Passe die Timeout-Werte des Clusters an. Weitere Informationen findest du unter Search settings (Sucheinstellungen) auf der OpenSearch-Website.
  • Optimiere deine Abfragen.
  • Skaliere die OpenSearch-Service-Domain, um die Bedingungen für die Anforderung zu erfüllen.

Ähnliche Informationen

Problembehandlung bei OpenSearch Service

Wie behebe ich Suchlatenzspitzen in meinem OpenSearch-Service-Cluster?

Wie kann ich die Indexierungsleistung in meinem OpenSearch-Service-Cluster verbessern?

Slow-Protokolle in OpenSearch Service mithilfe von Amazon-CloudWatch-Logs-Streaming und Kibana analysieren

AWS OFFICIALAktualisiert vor 3 Monaten