2014-10-03 18 views
2

我已经继承了Solr配置,并且在进行一些更新之前做了一些理智检查,我很关心内存设置。Solr JVM内存和MMap目录

系统有2个分片在2个Ubuntu 64位节点上分配索引,每个节点有32个CPU核心和132GB RAM,我们每天分批索引500k个文件,每10分钟分批一次,这些是对现有内容的更新,可能是5-10%。目前,合并因子设置为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

不知道我理解的3个波段,假设127.81是最大,深灰色正在使用的时刻和浅灰色被分配为以前使用但尚未清理?

我想知道这是否会帮助我知道将Xmx更改为多少值,也就是说基于浅灰色的64GB是多少值?

此外,一旦我改变了最大堆大小,它是一个简单的情况下更改配置使用MMapDirectory或有我需要注意的事情?

感谢

回答

2

也许晚了。但比从未好。 ;-)

该图告诉你,你的SOLR-Instance使用20G,已经在最大68G中使用过,可以使用128G堆。 -Xmx的合理值可能是32G。 有关MMapDirectoy的详细信息,请参阅use-lucenes-mmapdirectory-on-64bit