У нас есть сайт DotNetNuke, работающий на двух серверах с балансировкой нагрузки. Чтобы обеспечить синхронизацию файлов на этих серверах, мы используем службу репликации файлов.
Поиск работает нормально на DotNetNuke, когда нагрузка не сбалансирована, но в настройке со сбалансированной нагрузкой поиск перестает работать через некоторое время (нет предложений, нет результатов).
Следующее связанное исключение встречается во всех наших файлах журнала:
[D:2][T:31][ERROR] DotNetNuke.Services.Exceptions.Exceptions - Lucene.Net.Store.LockObtainFailedException: Lock obtain timed out: NativeFSLock@D:\Sites\SiteName\App_Data\Search\write.lock
at Lucene.Net.Store.Lock.Obtain(Int64 lockWaitTimeout)
at Lucene.Net.Index.IndexWriter.Init(Directory d, Analyzer a, Boolean create, IndexDeletionPolicy deletionPolicy, Int32 maxFieldLength, IndexingChain indexingChain, IndexCommit commit)
at Lucene.Net.Index.IndexWriter..ctor(Directory d, Analyzer a, MaxFieldLength mfl)
at DotNetNuke.Services.Search.Internals.LuceneControllerImpl.get_Writer()
at DotNetNuke.Services.Search.Internals.LuceneControllerImpl.Delete(Query query)
at DotNetNuke.Services.Search.Internals.InternalSearchControllerImpl.DeleteSearchDocumentInternal(SearchDocument searchDocument, Boolean autoCommit)
at DotNetNuke.Services.Search.Internals.InternalSearchControllerImpl.DeleteSearchDocumentsByModule(Int32 portalId, Int32 moduleId, Int32 moduleDefId)
at DotNetNuke.Services.Search.SearchDataStore.StoreSearchItems(SearchItemInfoCollection searchItems)
at DotNetNuke.Services.Search.SearchEngine.IndexContent()
at DotNetNuke.Services.Search.SearchEngineScheduler.DoWork()
Я предполагаю, что проблема вызвана тем, что на обоих серверах запущена функция поиска, а служба репликации файлов синхронизирует файлы, вызывающие конфликты.
Как лучше всего решить эту проблему?
- Добавить правило исключения, чтобы не реплицировать папку индекса поиска, но позволить обоим серверам продолжать поиск?
- Как-нибудь отключить индексирование одного сервера?
- Есть другие предложения?
Сведения об установке:
DNN v. 09.02.00 (366)
.NET Framework 4.6