Kibana 在 120 秒后关闭 HTTP 连接
Kibana closes HTTP connection after 120 seconds
所以,我有一个关于 Kibana 的问题,我不知道如何解决。我将从描述环境开始:
- 12 个 Elasticsearch(版本 2.1.2)节点。这些是安装了 Linux/CentOS 的各种 AWS 机器,使用 r3/r4/i3 实例类型,分布在三个可用区中。每台机器都有:
- 800 GiB 存储(EBS 和 SSD)
- 30 GiB RAM
- Kibana(版本 4.3.3)
- elasticsearch.requestTimeout和elasticsearch.shardTimeout设置为1500000,即1500s,即25分钟。
- 我们每天创建 26 个索引,保存 12 天,其中大部分有 12 个分片和 1 个副本。
- 将请求(非粘性)分发到所有 12 个节点的 AWS ELB。
- ELB 的空闲超时为 900 秒,即 15 分钟。
现在,当 运行 更复杂的查询时,通过 ELB 访问 Kibana 时,会在两到三分钟后显示“网关超时”错误消息。 Chrome 中的网络控制台显示正在触发两个请求,第一个用于确定所请求时间跨度的索引,第二个用于结果数据。第一个请求需要 20 到 50 秒并成功,第二个请求总是在两分钟后以 504(网关超时)结束。
当运行Kibana 直接针对其中一个Elasticsearch 节点生成查询时,查询大约需要7 分钟并成功完成。
当 运行 不带 ELB 的查询直接针对 Kibana 实例之一(使用 curl)时,它也会在几乎恰好两分钟后失败。使用 Wireshark,我可以看到 Kibana 在 120 秒后简单地关闭了 HTTP 连接。
超时从何而来?我该如何摆脱它?
事实证明,使用的套接字之一也有超时。 This pull request 包含指向可用于修复 Kibana 4.3.3 的部分的提交链接。
所以,我有一个关于 Kibana 的问题,我不知道如何解决。我将从描述环境开始:
- 12 个 Elasticsearch(版本 2.1.2)节点。这些是安装了 Linux/CentOS 的各种 AWS 机器,使用 r3/r4/i3 实例类型,分布在三个可用区中。每台机器都有:
- 800 GiB 存储(EBS 和 SSD)
- 30 GiB RAM
- Kibana(版本 4.3.3)
- elasticsearch.requestTimeout和elasticsearch.shardTimeout设置为1500000,即1500s,即25分钟。
- 我们每天创建 26 个索引,保存 12 天,其中大部分有 12 个分片和 1 个副本。
- 将请求(非粘性)分发到所有 12 个节点的 AWS ELB。
- ELB 的空闲超时为 900 秒,即 15 分钟。
现在,当 运行 更复杂的查询时,通过 ELB 访问 Kibana 时,会在两到三分钟后显示“网关超时”错误消息。 Chrome 中的网络控制台显示正在触发两个请求,第一个用于确定所请求时间跨度的索引,第二个用于结果数据。第一个请求需要 20 到 50 秒并成功,第二个请求总是在两分钟后以 504(网关超时)结束。
当运行Kibana 直接针对其中一个Elasticsearch 节点生成查询时,查询大约需要7 分钟并成功完成。
当 运行 不带 ELB 的查询直接针对 Kibana 实例之一(使用 curl)时,它也会在几乎恰好两分钟后失败。使用 Wireshark,我可以看到 Kibana 在 120 秒后简单地关闭了 HTTP 连接。
超时从何而来?我该如何摆脱它?
事实证明,使用的套接字之一也有超时。 This pull request 包含指向可用于修复 Kibana 4.3.3 的部分的提交链接。