我已经继承了Solr配置,并且在进行一些更新之前正在做一些完整性检查,我担心内存设置。
系统在2个Ubuntu 64位节点中的2个分片中有1个索引,每个节点具有32个CPU内核和132GB RAM,我们每天每10分钟分批分发约500k个文件,其中一部分是对现有内容,可能是5-10%。当前,MergeFactor设置为2,提交设置为:

<autoCommit>
    <maxTime>60000</maxTime>
    <openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
    <maxTime>900000</maxTime>
</autoSoftCommit>
当前,每个节点大约有2500万个文档,索引大小为45GB,我们每隔几周修剪一次数据,因此每个节点的数据绝不会超过3500万个文档。
阅读时,我看到了一个建议,我们应该使用MMapDirectory,当前它设置为NRTCachingDirectoryFactory。但是,当前JVM配置有-Xmx131072m,对于我读过的MMapDirectory,您应该为JVM使用较少的内存,以便为OS缓存提供更多空间。
查看JVM内存使用情况中的仪表板,我看到:

不确定我是否理解这3个波段,假设最大为127.81,目前使用的是深灰色,而以前使用过的浅灰色已分配,但尚未清除?
我试图了解这是否可以帮助我知道将Xmx更改为多少值(即基于浅灰色的64GB)会有什么好处?
另外,一旦更改了最大堆大小,是否是将配置更改为使用MMapDirectory的简单情况,还是我需要注意的事情?
谢谢

最佳答案

也许迟到了。但总比没有好。 ;-)

该图告诉您,您的SOLR实例使用20G,最大使用了68G,可以使用128G堆。 -Xmx的合理值应为32G。
有关MMapDirectoy的详细信息,请参考use-lucenes-mmapdirectory-on-64bit

09-10 05:33