2015-01-23 3 views
2

Я полный solr noob, поэтому я, вероятно, не могу найти важной информации здесь.solr update/json висит полу-случайным образом

Solr версия: 10.4.2 Платформа: Mac OS X

Я пытаюсь добавить около 5000 документов в пустой индекс. Документов есть 4 полей:

  • идентификатор (строка, индексируется, сохраненный)
  • названия (solr.TextField, индексировать не сохраняется)
  • ключевых слов (solr.TextField, несколько значений, индексированный, не сохраняется)
  • содержания (solr.TextField, индексируется, не сохраняется)

Я использую update/json для вставки документов в партиях от 100 в сплошном цикле (что делает новый запрос HTTP на update/json конечной точки для каждой партии). Проблема становится лучше, если я добавлю, например, задержка в 100 мс между каждым запросом. Если я задерживаю полную секунду, он полностью уходит, но это явно неприемлемо медленно.

Я работал над этим, добавляя очень короткие таймауты для своих HTTP-запросов (1 секунду) и применяя логику повтора. Он работает, но, конечно, я все время раздражаюсь, когда он повторяет попытку.

Мой процесс часто зависает в ожидании ответа solr в какой-то момент во время процесса. Например, если я начну с новым ядром и проверить это прямо сейчас, это мои результаты для каждого прогона в своей очереди:

  1. повиснуть на 45-й партии, Solr админы показывают 3,280 документов
  2. висят на 52-е партия, Solr админы показывают 3,788 документов
  3. свисает на 14-й партии, Solr админы показывают 3,788 документов
  4. свисает на 17-й партии, Solr админы показывают 3,788 документов
  5. успешно завершает все партии, Solr админы показывают 4,043 документов

Вход в систему solr admin не показывает выход во время любого из этих прогонов. В любой момент после неудачного или успешного запуска я могу запросить индекс и получить разумные результаты с учетом данных, которые были добавлены.

Обработчик запросов update/json - это «неявно добавленный» - он не указан в моем файле solrconfig.xml.

Я попытался переключить механизм блокировки от нативного к простому без изменений в поведении.

Любая помощь, которую вы можете предложить, была бы весьма признательна. Я не знаю, с чего начать.

Дополнительная информация:

1: Это, кажется, висит навсегда. Под «зависанием» я имею в виду, что Solr никогда не отвечает на HTTP-запрос. Если я отменим запрос и отправлю его снова, он, как правило, отлично работает сразу. Я дал ему подождать около 10 минут для ответа.

2: Мой solrconfig.xml имеет следующее:

<updateHandler class="solr.DirectUpdateHandler2"> 
    <updateLog> 
     <str name="dir">${solr.ulog.dir:}</str> 
    </updateLog> 
    <autoCommit> 
     <maxTime>${solr.autoCommit.maxTime:15000}</maxTime> 
     <openSearcher>false</openSearcher> 
    </autoCommit> 
    <autoSoftCommit> 
     <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime> 
    </autoSoftCommit> 
</updateHandler> 

ответ

1

Вы не описали фактическое «зависание». Это висит на время или навсегда? Это имеет большое значение.

Я принимаю ваш фактический документ (поля содержимого?) Довольно большие.

Там может быть несколько вещей:

  1. сбор мусора. Если вы выделили много памяти Solr, , когда он достиг предела, GC может быть довольно длинным. Существуют флагов Java , чтобы включить отчетность GC во время пробного запуска
  2. Слияние индексов. Просмотрите каталог данных/индекс и посмотрите, начнете ли файлы перемещаться. вокруг.
  3. Посмотрите также в журналах сервера, а не только на WebUI. Журналы сервера будут иметь постоянную болтовню о том, что происходит, только пользовательский интерфейс показывает проблемы.
  4. Также стоит проверить, что ваши фиксации и Настройки soft-commit (в файле solrconfig.xml).
+0

Я добавил обновление к моему вопросу о зависаниях и настройках фиксации (я думаю ...) Я буду искать журналы на сервере и посмотреть, что я могу расшифровать там. Прямо сейчас я работаю «отлично», установив очень низкий тайм-аут для HTTP-запросов (1 секунду) и повторив время ожидания. Это медленно, но это работает. – gwcoffey

Смежные вопросы