我已经继承了Solr配置并在进行一些更新之前进行了一些健全性检查,我关注内存设置。
系统在2个分区中有1个索引,分为2个Ubuntu 64位节点,每个节点有32个CPU内核和132GB内存,我们每天分成大约500k个文件,每天分批分发,每10分钟一次,其中一部分是对现有内容的更新,可能是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内存使用情况中的仪表板,我看到:
不确定我理解3个乐队,假设127.81是Max,此刻正在使用深灰色,并且浅灰色是按原先分配使用但尚未清理过的?
我试图了解这是否会帮助我知道将Xmx更改为多少是一个很好的价值,即根据浅灰色说64GB?
此外,一旦我更改了最大堆大小,这是一个简单的更改配置以使用MMapDirectory的情况,还是我需要注意的事项?
由于
的Si
答案 0 :(得分:2)
也许迟到了。但总比没有好。 ; - )
图表告诉您,您的SOLR-Instance使用20G,最多使用68G并且可以使用128G堆。 -Xmx的合理值可以是32G。 有关MMapDirectoy的详细信息,请参阅use-lucenes-mmapdirectory-on-64bit