向索引添加新文档是一项多线程和内存密集型操作。Meilisearch 的索引是我们搜索引擎快速、相关和可靠的核心。本文解释了有关 RAM 消耗和多线程的一些详细信息。
RAM
默认情况下,我们的索引器使用 sysinfo
Rust 库计算机器的总内存大小。然后 Meilisearch 会调整其行为,使索引最多使用可用资源的2/3。此外,您可以使用 --max-indexing-memory
实例选项手动控制 Meilisearch 可以消耗的最大 RAM 量。 防止 Meilisearch 在索引期间使用所有可用内存非常重要。如果发生这种情况,会有两个负面后果:
-
Meilisearch 可能会因过度消耗 RAM 而被操作系统终止
-
索引器处理更新时,搜索性能可能会下降
在两种情况下仍可能发生内存过载
-
当让 Meilisearch 自动设置索引期间使用的最大内存量时,
sysinfo
可能无法计算某些操作系统可用的 RAM 量。Meilisearch 仍会做出有根据的估计并根据此调整其行为,但在此情况下仍可能发生崩溃。点击此链接查看 sysinfo
支持的操作系统完整列表
-
低端机器在处理大量数据集时可能会遇到困难。在这种情况下,将数据负载拆分成更小的批次会有所帮助。有关更多信息,请参阅以下部分
多线程
在多核处理器机器中,索引器避免使用超过一半的可用处理单元。例如,如果您的机器有十二个核心,索引器将尝试最多使用其中的六个。这确保了 Meilisearch 始终能够执行搜索,即使您正在更新索引。 您可以使用 --max-indexing-threads
实例选项覆盖 Meilisearch 的默认线程限制。允许 Meilisearch 将所有处理器核心用于索引可能会对用户的搜索体验产生负面影响。 不幸的是,只有单核处理器的机器无法进行多线程处理。内存崩溃
在某些情况下,操作系统会中断 Meilisearch 并停止其所有进程。大多数此类崩溃发生在索引期间,是机器 RAM 不足的结果。这意味着您的计算机没有足够的内存来处理您的数据集。 Meilisearch 意识到此问题并正在积极尝试解决。如果您遇到内存相关的崩溃,请考虑:
© . This site is unofficial and not affiliated with Meilisearch.