DotNetNuke Lucene Search не работает 'Блокировка получения тайм-аута' в env с балансировкой нагрузки, как исправить? - PullRequest
0 голосов
/ 07 февраля 2019

У нас есть сайт 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 против 09.02.00 (366)
.NET Framework 4.6

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

В разделе настроек есть инструмент «планировщик», который содержит все функции CRON / фоновых заданий.

DNN Scheduler Tool

Одним из фоновых заданий является задание «Поиск: сканер сайта», которое отвечает за индексацию сайта.Когда это задание выполняется одновременно на обоих серверах, возникают непредвиденные конфликты.Чтобы этого не происходило, вы можете настроить запуск задания только на указанном сервере, используя параметр «Серверы».

Search: Site Crawler DNN Background Job

После настройки задания на выполнение только на одном сервере проблема не возвращалась, и поиск по-прежнему работает на обоих серверах.

Спасибо @Sanjay за указание в правильном направлении.

0 голосов
/ 08 февраля 2019

Если я правильно помню, поиск выполняется по запланированному заданию.Вы пытались настроить задачу для запуска только на одном сервере, а затем использовать репликацию файлов для синхронизации с другим сервером.

...