跳至内容

如何解决 OpenSearch Service 的连接和套接字超时问题?

2 分钟阅读
0

当我尝试连接到 Amazon OpenSearch Service 时,我的客户端应用程序出现连接超时或套接字错误。

解决方法

对超时问题进行故障排除

执行以下操作:

对“Connection timed out”错误进行故障排除

如果您的连接超时,您将收到一条类似于以下示例的错误消息:

“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”

根据您使用的域类型,执行以下故障排除操作。

公共域

当客户端具备互联网连接或指向互联网的路由时,可通过互联网访问公共域。如果客户端不具备互联网连接或指向互联网的路由,则当您运行 telnetcurl 命令时,可能会收到以下输出:

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

-或-

*   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

要解决此问题,请确保客户端具备指向互联网的路由,且不会阻止向搜索端点发出的出站请求。

要测试您的连接,请运行以下命令:

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

**注意:**请将 search-domain-name-someid 替换为您的域名,将 aws-region 替换为您的 AWS 区域。

搜索端点返回的成功响应示例:

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

VPC 内的域

对于您在虚拟私有云 (VPC) 内创建的 OpenSearch Service 域,VPC 中的每个数据节点都有一个弹性网络接口。这些网络接口会将网络流量转发到您的域。

要检查网络接口与您的域之间的连接,请完成以下步骤:

  1. 运行以下命令之一,以获取您的 VPC 中的网络接口 IP 地址:

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

    -或-

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

    **注意:**请将 domain-name-id 替换为您的域名,将 aws-region 替换为您的区域。
    在输出中,记下网络接口 IP 地址。

  2. 要测试连接,请对每个数据节点 IP 地址运行以下命令之一:

    telnet ip-address 443

    -或-

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

    **注意:**请将 ip-address 替换为网络接口 IP 地址。
    超时响应示例:

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

    成功响应示例:

    Trying xyz.xyz.xyz.xyz...Connected to xyz.xyz.xyz.xyz.
    Escape character is '^]'.
  3. 如果连接超时,请确认您的 VPC 的安全组、路由表和网络访问控制列表(网络 ACL)是否允许访问该域。如果您可以连接到某些网络接口,但连接其他网络接口时超时,请创建一个 AWS Support 工单

**注意:**您无法从 VPC 外部访问您的 OpenSearch Service 域。有关详细信息,请参阅在 VPC 中启动您的 OpenSearch Service 域

对“HTTP 504 gateway timeout”错误进行故障排除

负载均衡器会将入站流量分发到数据节点。如果 OpenSearch Service 请求未在空闲超时时间内返回确认信息,则负载均衡器会关闭该 TCP 连接。因此,您会收到一条类似于以下示例的错误消息:

“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]”

通常,当 OpenSearch Service 接收过多同步请求,或请求较复杂时,将会出现“HTTP 504 Gateway timeout”错误。该错误并不一定表示集群中存在问题。有关原因和故障排除步骤的详细信息,请参阅 HTTP 504: 网关超时

对“SocketTimeoutException”错误进行故障排除

当客户端发送过多请求或复杂请求时,通常会发生套接字超时错误。OpenSearch Service 域可能会出现资源使用率过高,且客户端响应延迟的情况。错误消息示例:

“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”

要解决此问题,请执行以下操作:

相关信息

OpenSearch Service 故障排除

如何解决 OpenSearch Service 集群中的搜索延迟峰值问题?

如何提高我的 OpenSearch Service 集群上的索引性能?

Analyzing OpenSearch Service slow logs using Amazon CloudWatch Logs streaming and Kibana(使用 Amazon CloudWatch Logs 流式传输和 Kibana 分析 OpenSearch Service 慢速日志)

AWS 官方已更新 4 个月前