【发布时间】:2013-03-23 11:48:39
【问题描述】:
有人知道 solr4/lucene 和 JVM 是如何管理内存的吗?
我们有以下案例。
我们有一个 15GB 的服务器,只运行 SOLR4/Lucene 和 JVM(无自定义代码)
我们分配了 2GB 的内存,而 JVM 使用了 1.9MB。在某个时候发生了一些事情,我们的内存不足。
然后我们将 JVM 内存增加到 4GB,我们看到逐渐地,JVM 开始尽可能多地使用它。它现在正在使用分配的 4GB 中的 3GB。
这是正常的 JVM 内存使用情况吗?即 JVM 是否总是尽可能多地使用分配的空间?
感谢您的帮助
【问题讨论】:
-
有几个原因可能会导致 SOLR 到 OOM。你使用刻面吗?您还启用了哪些其他缓存?您正在使用的目录实现是什么?标准?MMap?NIO?
-
嗨@lexk,我们确实使用构面。在我们的 solrconfig.xml 中启用的缓存是 filterCache。 fieldValueCache 和 DocumentCache。我们没有启用 queryResultCache。我们的 filterCache 大小是 16384,我们的 documentCache 是 2048,fieldValueCache 是 4096。我们在 solrconfig.xml 中没有目录实现指令,所以我想我们使用标准实现。索引的文档总数为 8M 文档,大小接近 20GB。希望这有助于您提供一些见解。