我们已经配置了一个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,但我没找到任何东西。在当前结构中升级并不容易,我希望它只是一个错误的配置。
答案 0 :(得分:1)
您必须在卷上提供两倍于合并操作的当前索引大小的可用空间。删除文件的引用号是否会随着时间的推移而增加?(如果不是仅增加ulimit并让gc完成其余的操作),否则请检查netstat
与CLOSE_WAIT的连接是否与副本节点有关。