將新文件加入索引是一個多執行緒且記憶體密集的操作。Meilisearch 的索引是我們搜尋引擎快速、相關且可靠的核心。本文說明有關 RAM 消耗和多執行緒的一些詳細資訊。
預設情況下,我們的索引器使用 sysinfo Rust 程式庫來計算機器的總記憶體大小。然後,Meilisearch 會調整其行為,使索引使用最多三分之二的可用資源。或者,您可以使用 --max-indexing-memory 執行個體選項來手動控制 Meilisearch 可以消耗的最大 RAM 量。
sysinfo
--max-indexing-memory
防止 Meilisearch 在索引期間使用所有可用記憶體非常重要。如果發生這種情況,會有兩個負面後果
Meilisearch 可能因過度消耗 RAM 而被作業系統終止
索引器處理更新時,搜尋效能可能會下降
在兩種情況下仍可能發生記憶體過度消耗
當讓 Meilisearch 自動設定索引期間使用的最大記憶體量時,sysinfo 可能無法針對某些作業系統計算可用 RAM 的數量。Meilisearch 仍然會做出合理的估計並據此調整其行為,但在此情況下仍可能發生崩潰。 請點擊此連結查看 sysinfo 支援的作業系統完整列表
在處理龐大的資料集時,較低階的機器可能會遇到困難。在這種情況下,將您的資料負載拆分為較小的批次可能會有所幫助。如需更多資訊,請參閱下方章節
在具有多核心處理器的機器中,索引器會避免使用超過一半的可用處理單元。例如,如果您的機器有十二個核心,則索引器最多會嘗試使用六個核心。這可確保 Meilisearch 即使在您更新索引時也能隨時執行搜尋。
您可以使用 --max-indexing-threads 執行個體選項來覆寫 Meilisearch 的預設執行緒限制。允許 Meilisearch 使用所有處理器核心進行索引可能會對您使用者的搜尋體驗產生負面影響。
--max-indexing-threads
不幸的是,在只有一個處理器核心的機器中,多執行緒是不可能的。
在某些情況下,作業系統會中斷 Meilisearch 並停止其所有程序。這些崩潰大多發生在索引期間,並且是機器 RAM 不足的結果。這表示您的電腦沒有足夠的記憶體來處理您的資料集。
Meilisearch 已知曉此問題,並積極嘗試解決。如果您正努力解決與記憶體相關的崩潰問題,請考慮
想要包含更多詳細資訊嗎? 提出問題 在我們的公開文件儲存庫中。