
“保持初始搜索背景關系活躍對于主動更新的索引來說成本很高。”
上面這句話中的高成本是指記憶體使用嗎?
那么,為什么記憶體使用率這么高呢?
為了在保持活動狀態的同時對索引的更新請求進行排隊?
還是因為您在記憶體中快取了一個活動索引快照?
uj5u.com熱心網友回復:
從官方檔案:
滾動回傳在初始搜索請求時與搜索匹配的所有檔案。它忽略對這些檔案的任何后續更改。[...] 搜索背景關系由初始請求創建,并由后續請求保持活動狀態。[...]
通常,后臺合并程序通過將較小的段合并在一起以創建新的、更大的段來優化索引。一旦不再需要較小的段,它們就會被洗掉。此程序在滾動期間繼續,但打開的搜索背景關系可防止舊段被洗掉,因為它們仍在使用中。
使舊段保持活動狀態意味著需要更多的磁盤空間和檔案句柄。確保您已將節點配置為具有充足的空閑檔案句柄。請參閱檔案描述符。
此外,如果段包含已洗掉或更新的檔案,則搜索背景關系必須跟蹤段中的每個檔案在初始搜索請求時是否處于活動狀態。如果您的索引上有許多打開的滾動條并且會持續洗掉或更新,請確保您的節點有足夠的堆空間。
重點已添加到上述檔案中,以強調為什么在很長一段時間內保持一個或多個滾動背景關系的成本很高。Elasticsearch 盡最大努力保持一切新鮮和活躍并丟棄舊資料,但滾動背景關系基本上是將舊資料放在生命支持上并將其存放在角落里多一點時間,然后在滾動背景關系不存在時讓它死亡不再需要了。
這就是為什么需要更多的資源(主要是存盤、檔案句柄和堆)來保持滾動背景關系的活動,這就是所謂的“高成本”
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448762.html
