如何防止 Amazon Elasticsearch Service 中出现 HTTP 504 网关超时错误?

上次更新时间:2020 年 11 月 3 日

我正在尝试解决 Amazon Elasticsearch Service (Amazon ES) 中的 504 网关超时错误。我该如何操作?

简短描述

负载均衡器位于每个 Amazon ES 域的前面。负载均衡器将传入流量分配到您的数据节点。如果 Amazon ES 请求未完成并在空闲的超时期限内返回成功或未成功确认,负载均衡器将关闭 TCP 至集群的连接。这通常会导致 HTTP 504 网关超时错误。HTTP 504 网关超时错误并不一定表示集群出现问题,它仅仅意味着请求无法在空闲超时期限内完成。

当您同时发送过多请求或发送复杂请求时,通常会发生网关超时错误。在这两种情况下,结果都是相同的:Amazon ES 无法在空闲超时期限内完成请求。

分辨率

使用以下一种或多种方法解决 HTTP 504 网关超时错误:

  • 为您的 Elasticsearch 索引启用慢日志,然后指定日志记录阈值。慢日志可以帮助您确定特定查询是否需要花费很长时间才能完成。如果是,调整查询以解决 504 错误。有关更多信息,请参阅查看 Amazon Elasticsearch Service 慢日志
  • 减少 Amazon ES 必须为请求查询的数据量。这可以减少请求完成所需的时间。
  • 切换到更大的实例类型。有关更多信息,请参阅选择实例类型和测试
  • 在应用程序中配置指数退避和重试机制,以便再次发送超时请求。
  • 使用批量请求而不是单个请求。这可以减少集群的每请求开销。