ubuntu - Solr JVM 内存和 MMapDirectory

标签 ubuntu memory solr jvm

我继承了一个 Solr 配置并在进行一些更新之前进行了一些健全性检查,我担心内存设置。

系统在 2 个分片中有 1 个索引,分布在 2 个 Ubuntu 64 位节点上,每个节点有 32 个 CPU 内核和 132GB RAM,我们每天索引大约 50 万个文件,每 10 分钟分批分布,其中一部分是对现有内容的更新,可能是 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 使用更少的内存,这样操作系统缓存就有更多的可用内存。

查看 JVM 内存使用情况中的仪表板,我看到:

enter image description here

不确定我是否理解这 3 个波段,假设 127.81 是最大,目前正在使用深灰色,而分配浅灰色是因为它以前使用但尚未清理?

我正在尝试了解这是否会帮助我了解将 Xmx 更改为多少比较划算,例如基于浅灰色的 64GB?

此外,一旦我更改了最大堆大小,这是将配置更改为使用 MMapDirectory 的简单案例还是我需要注意的事项?

谢谢

最佳答案

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

图表告诉您,您的 SOLR 实例使用 20G,最大使用 68G 并且可以使用 128G 堆。 -Xmx 的合理值可能是 32G。 有关 MMapDirectoy 的详细信息,请参阅 use-lucenes-mmapdirectory-on-64bit

关于ubuntu - Solr JVM 内存和 MMapDirectory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176198/

相关文章:

solr dismax识别短语匹配

exception - 由于 3rd 方库的位置,启动 Solr 云时出错

c - 像 v8 这样的 JIT 编译器如何构建其内存(即堆栈、堆、代码和数据)?

c - 如何将数组声明为参数不需要第一维的界限?

php - Solr/lucene 搜索 - 有多好用 - 哪一个?

bash - 未知名称的 Grep 文件名

python - 在这种情况下绕过 `MemoryError` 的最佳方法是什么?

node.js - 如何从 Node 内创建 ubuntu 用户

ubuntu - 替换终端中的字符

linux - 灯板::Ubuntu