Replication 为什么我的solr slave指数持续增长?
我有一个5核solr 1.4主机,它使用所述的solr复制复制到另一个5核solr。所有写操作都是针对主设备完成的,并间歇性地复制到从设备。这是使用以下顺序完成的:Replication 为什么我的solr slave指数持续增长?,replication,solr,Replication,Solr,我有一个5核solr 1.4主机,它使用所述的solr复制复制到另一个5核solr。所有写操作都是针对主设备完成的,并间歇性地复制到从设备。这是使用以下顺序完成的: 在每个主核上提交 在每个从内核上复制 在每个从内核上进行优化 在每个从内核上提交 我遇到的问题是,从机似乎保留了旧的索引文件,占用了更多的磁盘空间。例如,经过3次复制后,主核心数据目录如下所示: $ du -sh * 145M index $ du -sh * 300M index 144M index.2010
$ du -sh *
145M index
$ du -sh *
300M index
144M index.20100621042048
145M index.20100629035801
4.0K index.properties
4.0K replication.properties
但同一内核的从机上的数据目录如下所示:
$ du -sh *
145M index
$ du -sh *
300M index
144M index.20100621042048
145M index.20100629035801
4.0K index.properties
4.0K replication.properties
以下是index.properties的内容:
#index properties
#Tue Jun 29 15:58:13 CDT 2010
index=index.20100629035801
#Replication details
#Tue Jun 29 15:58:13 CDT 2010
replicationFailedAtList=1277155032914
previousCycleTimeInSeconds=12
timesFailed=1
indexReplicatedAtList=1277845093709,1277155253911,1277155032914
indexReplicatedAt=1277845093709
replicationFailedAt=1277155032914
lastCycleBytesDownloaded=150616512
timesIndexReplicated=3
和replication.properties:
#index properties
#Tue Jun 29 15:58:13 CDT 2010
index=index.20100629035801
#Replication details
#Tue Jun 29 15:58:13 CDT 2010
replicationFailedAtList=1277155032914
previousCycleTimeInSeconds=12
timesFailed=1
indexReplicatedAtList=1277845093709,1277155253911,1277155032914
indexReplicatedAt=1277845093709
replicationFailedAt=1277155032914
lastCycleBytesDownloaded=150616512
timesIndexReplicated=3
此从属服务器的solrconfig.xml包含默认删除策略:
[...]
<mainIndex>
<unlockOnStartup>false</unlockOnStartup>
<reopenReaders>true</reopenReaders>
<deletionPolicy class="solr.SolrDeletionPolicy">
<str name="maxCommitsToKeep">1</str>
<str name="maxOptimizedCommitsToKeep">0</str>
</deletionPolicy>
</mainIndex>
[...]
[…]
假的
真的
1.
0
[...]
我缺少什么?在从属服务器上提交和优化是没有用的。由于所有写操作都是在主机上完成的,因此只有在主机上才能执行这些操作
这可能是问题的原因:由于您在从属服务器上执行了额外的提交和优化,因此在从属服务器上保留了更多的提交点。但这只是一个猜测,应该更容易理解在主服务器和从服务器上使用完整的solrconfig.xml时会发生什么情况。我确定在完全重新加载主服务器后进行复制时,会留下额外的索引。*目录。我所说的“完全重新加载”是指停止主机,删除[core]/data/*下的所有内容,重新启动(此时solr会创建一个新索引),为所有文档编制索引,然后进行复制
根据一些额外的测试,我发现删除其他index*目录(除了在[core]/data/index.properties中指定的目录)似乎是安全的。如果我对这种解决方法不满意,我可能会决定在完全重新加载主机后第一次复制之前清空从属索引(停止;删除数据/*;开始)。在从属位置进行的优化导致索引大小加倍。在优化时,将创建单独的索引段,以将原始索引重写为优化过程中提到的段数(默认值为1)。 最佳实践是偶尔优化一次,在任何情况下都不要调用它(运行cron作业或其他什么),只在主节点优化,而不是在从节点优化。从机将通过复制获得这些新段。
您应该在从机上提交,索引重新加载将在复制后在从机上处理新文档的可用性 闭门人:我真的不认为这属于serverfault.com,我也这么认为,但他有maxCommitsToKeep=1和maxOptimizedCommitsToKeep=0,所以额外的快照不应该超过1个……是的,你是对的。正如我所说,在主服务器和从服务器上使用完整的solrconfig.xml可能更容易理解。这在没有额外的优化和提交的情况下发生。即使我没有优化,也会发生这种情况。