Solr 4.0持有对已删除文件的引用

时间:2013-05-28 08:33:15

标签: java solr lucene

我们已经配置了一个Solr服务器,我们使用从数据库中提取的数据来提供,我们将其配置为主服务器。此主服务器使用如下配置的复制机制向其他一些从服务器提供数据:

  <requestHandler name="/replication" class="solr.ReplicationHandler" >
      <lst name="master">
          <str name="replicateAfter">startup</str>
          <str name="replicateAfter">commit</str>
          <str name="commitReserveDuration">00:00:10</str>
      </lst>
      <str name="maxNumberOfBackups">1</str>
  </requestHandler>

奇怪的是,运行此solr实例的java进程正在保存对已删除文件的引用。如果lsof已完成,我可以看到:

java      17564 solr_master   44r      REG              253,2 4229809586     705005 /var/solr_master/data/index/_aegu.fdt (deleted)
java      17564 solr_master   45r      REG              253,2 4229809586     705005 /var/solr_master/data/index/_aegu.fdt (deleted)
java      17564 solr_master   49r      REG              253,2   17686596     705138 /var/solr_master/data/index/_ahjh.fdt (deleted)
java      17564 solr_master   51r      REG              253,2 4229809586     705005 /var/solr_master/data/index/_aegu.fdt (deleted)

索引不断更新,奴隶每20秒检查一次复制。

提交未明确完成,它使用自动提交配置如下:

  <autoCommit> 
    <maxTime>15000</maxTime> 
    <openSearcher>false</openSearcher> 
  </autoCommit>

有没有人看到我做错了什么,或者有人遇到同样的问题,在这种情况下,解决方案是什么?

我正在使用LUCENE_40,这是否与Lucene的某些错误有关?

我已经看了the Solr bug list,但我没找到任何东西。在当前结构中升级并不容易,我希望它只是一个错误的配置。

1 个答案:

答案 0 :(得分:1)

您必须在卷上提供两倍于合并操作的当前索引大小的可用空间。删除文件的引用号是否会随着时间的推移而增加?(如果不是仅增加ulimit并让gc完成其余的操作),否则请检查netstat与CLOSE_WAIT的连接是否与副本节点有关。