优化从我的应用程序收集日志的旧索引

optimization on old indexes collecting logs from my apps

我有一个弹性集群,有 3 个节点(每个节点 6 个 cpu,31GB 堆,64GB RAM)每天收集 25GB 日志,但 3 个月后我意识到我的仪表板在检查过去的统计信息时变得非常慢周,如果有改进索引读取性能的选项,以便在计算我的仪表板统计信息时变得更快,请提出建议?

谢谢!

我建议你尝试增加分片数量 当您有更多分片时,Elasticsearch 会将您的数据拆分到多个分片上,因此,Elastic 将发送多个并行请求以在较小的数据堆栈中进行搜索

对于碎片数量,您可以尝试根据您的堆内存大小拆分它
无论实际 JVM 堆大小如何,最大分片数的上限应该是服务器上配置的每 1 GB 堆 20 个分片。

ElasticSearch - Optimal number of Shards per node https://qbox.io/blog/optimizing-elasticsearch-how-many-shards-per-index https://opster.com/elasticsearch-glossary/elasticsearch-choose-number-of-shards/

您为仪表板积累和使用的数据量似乎导致了性能问题。

一个简单的选择是增加集群的资源,但您肯定会再次遇到同样的问题。因此,您应该重新考虑您的数据保留政策。

很可能您真的只对最近的数据感兴趣。您需要回答“最近”在您的用例中意味着什么的问题,并简单地丢弃比这更早的任何内容。

Elasticsearch 有自动执行此操作的工具,请查看 Index Lifecycle Management

您可能需要创建一个索引模板并对其应用生命周期策略。 Elasticsearch 随后将处理索引的自动滚动、旧数据的逐出,如果您真的想要很长的保留期,甚至可以通过热-温-冷架构中的数据层进行迁移。

所有这些都将使您的集群性能更可预测。