Solr JVM内存和MMapDirectory

3
我继承了Solr配置,并在进行一些更新之前做了一些健全性检查,我关心内存设置。
该系统在两个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内存使用情况的仪表板,我看到:

enter image description here

不确定我是否理解了这三个带状图,假设127.81是最大值,深灰色当前正在使用,浅灰色是以前分配但尚未清理的内容?

我试图了解这是否有助于我知道将Xmx更改为多少才是合适的,例如基于浅灰色64GB?

此外,一旦我更改了最大堆大小,是否只需更改配置以使用MMapDirectory,还是需要注意其他问题?

谢谢

Si

1个回答

3
也许晚了一点,但总比没有好。;-)
这张图表告诉你,你的SOLR实例使用了20G内存,最大使用量达到了68G,可以使用128G堆。-Xmx的合理值可能为32G。 有关MMapDirectoy的详细信息,请参考use-lucenes-mmapdirectory-on-64bit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接