Lucene专家:如何针对IndexWriter运行诊断以解决性能问题



我有一个索引,它目前占用大约1gb的空间,包含大约250万个文档。为了提高速度,索引存储在固态硬盘上。我一次添加2500个文档,并在每批添加后提交。该索引是一个"实时"索引,需要在白天和晚上保持最新,因此最小化写入速度非常重要。我使用合并因子为10,并且从不调用Optimize(),而是允许索引根据合并因子根据需要优化自己。

我需要在每批添加后提交文档,因为我记录了这个事实,以便如果应用程序崩溃或重新启动,它可以从它离开的地方捡起。如果我没有提交,存储的状态将与索引中的不一致。我假设我的添加,删除和更新丢失,如果作者被销毁没有提交。

无论如何,我注意到,在任意一段时间后,这可能是从两分钟或两个小时的任何地方和一些可变数量的先前提交,索引器似乎在IndexWriter.AddDocument(doc)方法上停滞不前,我不能为我的生活弄清楚为什么它会停滞不前或如何修复它。这个块可以在一个位置上停留两个小时以上,对于一个索引占用不到2GB的文档,并且有一个SSD驱动器来工作,这似乎很奇怪。

什么会导致AddDocument阻塞?有什么Lucene诊断工具可以帮助我吗?我还能寻找什么来追踪这个问题呢?

您可以使用IndexWriter.SetInfoStream()将诊断输出重定向到可能给您提示错误的流

相关内容

最新更新