我继承了Solr配置,并在进行一些更新之前做了一些健全性检查,我关心内存设置。
该系统在两个Ubuntu 64位节点上拆分了1个索引成2片,每个节点都有32个CPU核心和132GB RAM。我们每天会以分散在10分钟批次中的方式索引大约50万个文件,其中一部分是现有内容的更新,可能为5-10%。当前MergeFactor设置为2,提交设置如下:
该系统在两个Ubuntu 64位节点上拆分了1个索引成2片,每个节点都有32个CPU核心和132GB RAM。我们每天会以分散在10分钟批次中的方式索引大约50万个文件,其中一部分是现有内容的更新,可能为5-10%。当前MergeFactor设置为2,提交设置如下:
<autoCommit>
<maxTime>60000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>900000</maxTime>
</autoSoftCommit>
目前每个节点大约有25M个文档,索引大小为45GB,我们每隔几周修剪数据,因此每个节点中的文档数量很少超过35M。
在阅读中,我看到了一条建议,即我们应该使用MMapDirectory,但当前它设置为NRTCachingDirectoryFactory。然而,当前JVM配置为-Xmx131072m,对于MMapDirectory,我已经阅读到应该使用更少的JVM内存,以便有更多可用于操作系统缓存。
查看JVM内存使用情况的仪表板,我看到:
不确定我是否理解了这三个带状图,假设127.81是最大值,深灰色当前正在使用,浅灰色是以前分配但尚未清理的内容?
我试图了解这是否有助于我知道将Xmx更改为多少才是合适的,例如基于浅灰色64GB?
此外,一旦我更改了最大堆大小,是否只需更改配置以使用MMapDirectory,还是需要注意其他问题?
谢谢
Si