JavaSolr4.0保留对已删除文件的引用
我们已经配置了一个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中的某些bug有关吗
我已经看过了,但什么也没找到。升级在当前的结构中不是那么容易,我希望这只是一个配置错误
# 1 楼答案
您必须在卷上为合并操作提供两倍于当前索引大小的可用空间。删除文件的参考编号是否随时间增加?(如果不只是增加ulimit并让gc完成其余的工作),否则请检查
netstat
中是否存在到副本节点的“CLOSE_WAIT”连接