2014-10-03 24 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