讓我們假設一個條件,如果我在過去 15 分鐘內有 500k 日志,這對我的彈性堆疊性能會更好
- 有 10 個索引來保存這 50 萬條日志。
- 有 1 個索引來保存具有更多分片的 500k 日志。
這有助于提高我的儀表板性能有人可以幫助我嗎?
uj5u.com熱心網友回復:
tldr 使用ILM為您管理它并設定一個介于 30-50GB 之間的分片大小,并讓它為您管理所有這些
更長的答案是,問題不是索引,而是碎片
例如,如果您使用 10 個索引和 1 個主分片和 1 個副本分片,并且 500K 的事件是 500MB,那么您就有 20 個分片,其中包含 25MB 的資料。Elasticsearch 需要管理的資源 - 堆、CPU - 就像您擁有相同的分片和索引計數一樣,但每個分片中有 50GB 的資料
建議的分片大小為 30-50GB,但這取決于用例和其他一些內容,例如集群大小、查詢和索引 SLA 等。對于大多數日志記錄用例,50GB 是密度和回應能力之間的良好平衡
uj5u.com熱心網友回復:
因此,根據 elasticsearch 的建議,分片大小在 20GB-50GB 之間,任何超過 50GB 的東西都會產生負面影響。這是因為如果集群失敗,那么更大的分片將需要更多時間來恢復,這不是我們想要的。
可以使用 ILM 策略管理分片大小。使用翻轉和收縮索引來管理分片大小。翻轉有兩個條件,主要是我們可以設定最大檔案數,另一個是如果達到特定大小。如果滿足這些條件中的任何一個,它將創建一個新索引。通過使用它,我們可以為檔案實作類似的分片大小。
節點中的分片數量取決于您的堆記憶體,因為他們建議每個節點的分片低于每 GB 堆 20 個。這意味著 25GB 堆應該能夠容納 500 個分片(最大)。
儀表板性能完全取決于 Kibana 查詢資料的速度。所以我建議你不要有太多的小碎片,因為這可能會對搜索產生負面影響(需要更多的時間來排隊和處理資料)。更多的小碎片會導致更多的副本,這會對資源造成損害。因此,擁有少量大分片(20GB-50GB)是理想的。
其他提高儀表板性能的方法:
通過增加熱節點的數量。每個節點都有它的作用,通常熱點資料將是查詢最多的資料,因此如果你想提高效率,一種方法是添加更多的 data_hot 節點。
索引模式中的欄位數會對儀表板性能產生影響。假設您有一個名為 filebeat-* 的索引模式,它有 120000 個欄位,另一個索引模式 filebeat-dev-* 有大約 3000 個欄位。filebeat-dev 會比 filebeat-* 提供更好的性能。
請參考:https : //www.elastic.co/blog/advanced-tuning-finding-and-fixing-slow-elasticsearch-queries
https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster
uj5u.com熱心網友回復:
官網建議shard大小在10GB到50GB之間。500k的日志用一個索引就可以了(1個shard就夠了),可以看下面的文章。
https://www.elastic.co/guide/en/elasticsearch/reference/current/size-your-shards.html#shard-size-recommendation
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363494.html
