我正在尝试使用 Azure Blob 存储中的 AzureDirectory 实现 Lucene.Net 索引。
索引过程从 Azure 辅助角色运行。
在本地 azure 模拟器中,我可以将大约 300 万条记录处理到索引中,搜索速度非常快。
现在我正在尝试将其添加到实时 Azure 中,并且辅助角色开始正常处理。
我遇到的问题是,在大约 500,000 条记录之后,工作者角色倒下并重新启动。
我有异常处理,并且在整个代码、异常处理程序和 OnStop 事件中都使用带有跟踪语句的诊断。来自主代码的跟踪语句很好地出现在诊断表中,并为我提供了正在处理的记录的日志,但来自异常处理和 OnStop 的跟踪语句从未出现。
有很多代码要发布,所以我想我首先要问是否有人知道 AzureDirectory 对这种类型的 Lucene.Net 索引有任何限制?
编辑: 我终于设法通过移动一些代码来获得异常。索引磁盘空间不足,我得到以下异常。将尝试增加空间并将返回结果。
磁盘空间不足。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.FileStream.WriteCore(Byte[] buffer, Int32 offset, Int32 count) 在 Lucene.Net.Store.SimpleFSDirectory.SimpleFSIndexOutput.FlushBuffer(Byte[ ] b, Int32 offset, Int32 size) at Lucene.Net.Store.BufferedIndexOutput.WriteBytes(Byte[] b, Int32 offset, Int32 length) at Lucene.Net.Store.BufferedIndexOutput.Flush() at Lucene.Net.Store。 RAMOutputStream.WriteTo(IndexOutput out_Renamed)
在 Lucene.Net.Index.StoredFieldsWriter.FinishDocument(PerDoc perDoc)
在 Lucene.Net.Index.DocumentsWriter.FinishDocument(DocumentsWriterThreadState perThread, DocWriter docWriter) 在 Lucene.Net.Index.DocumentsWriter.WaitQueue.Add(DocWriter doc) 在 Lucene.Net.Index.DocumentsWriter.WaitQueue.WriteDocument(DocWriter doc) 在Lucene.Net.Index.IndexWriter.AddDocument(文档文档,分析器分析器)上的 Lucene.Net.Index.DocumentsWriter.UpdateDocument(文档文档,分析器分析器,术语 delTerm)
最终更新 现在我的索引器在大约 5 分钟内索引了 330 万行数据。
我已经回到基于 RAM 的存储并稍微减少了被索引的数据,我的文档中有 3 个字段,现在减少到 2 个。
从 azure webrole 中搜索索引也非常快。
我已经听取了每个人的意见,并将在下个月左右对此进行监控。我很想看看它在负载下的表现。