Solr:java堆空间不断增长

时间:2014-02-04 11:11:59

标签: java memory solr

我们有一个Solr服务器(Solr 4.5),其中包含为正在开发的项目设置的自定义架构和配置。现在我已经观察到,通过运行我们的集成测试,Solr服务器的内存使用量不断增长。这些测试(JUnit)每个都向服务器发布一组100个随机生成的记录,查询一下并删除它们。 删除策略设置为

<deletionPolicy class="solr.SolrDeletionPolicy">
  <str name="maxCommitsToKeep">1</str>
  <str name="maxOptimizedCommitsToKeep">0</str>
</deletionPolicy>

即使索引不再包含文档,也不会释放内存。每次运行测试都会将使用的内存增加一定量(大约40 M,而索引本身大约为7 k),直到整个服务器因OutOfMemoryError而死亡。

Solr安装在Tomcat 6.0.35.0上运行,Java 1.7.0_17与-Xmx12g一起运行。操作系统是Linux。

怎么会这样?我在哪里可以调整Solr的内存处理?

1 个答案:

答案 0 :(得分:0)

看起来,我已经为测试机器设置了缓存值和Xmx太高,因为java进程占用的内存比分配给它的内存多(开销)。随着尺寸的减小,Solr现在可以稳定运行两天并进行大量的单元测试(之前没有)。 测试场景(用随机值填充索引然后完全清除它)将缓存填充到最大记录。似乎从索引中删除记录不一定会将其从缓存中删除......