如何设置参数-setRAMBufferSizeMB?是否取决于机器的 RAM 大小?还是需要索引的数据大小?还是其他参数?有人可以建议一种方法来确定 setRAMBufferSizeMB 的值。
问问题
339 次
1 回答
0
那么,我们在 Lucene javadoc 中对这个参数有什么了解:
确定在刷新到目录之前可用于缓冲添加的文档和删除的 RAM 量。通常,为了获得更快的索引性能,最好按 RAM 使用情况而不是文档计数进行刷新,并尽可能使用大的 RAM 缓冲区。设置后,只要缓冲的文档和删除使用这么多 RAM,写入器就会刷新。
最大 RAM 限制本质上由 JVM 可用内存决定。然而,IndexWriter 会话消耗的内存量可能比给定的 RAM 限制大得多,因为此限制只是何时将内存驻留文档刷新到目录的指示。当其他线程向写入器添加文档时,刷新可能同时发生。为了应用程序的稳定性,JVM 中的可用内存应该比用于索引的 RAM 缓冲区大得多。
默认情况下,Lucene 使用 16 Mb 作为这个参数(这是对我的暗示,你不应该有那么大的参数来获得良好的索引速度)。我建议您通过将其设置为 500 Mb 并检查您的系统表现如何来调整此参数。如果您将遇到崩溃,您可以尝试一些较小的值,例如 200 Mb 等,直到您的系统稳定为止。
是的,正如javadoc中所说,这个参数取决于JVM堆,但是对于Python,我认为它可以无限制地分配内存。
于 2017-09-19T11:41:25.253 回答