Я пытаюсь улучшить производительность моего индекса Solr 6.0.
Первоначально мы индексировали 45-метровые строки, которые использовали оператор выбора, соединяющий 7 таблиц, и на индексацию уходило более 7 часов.Это заставило нас получить снимок слишком старой ошибки, пока соединение jdbc открыто в течение всего периода индексации.Причиной сбоя нашего полного индекса.
Нам удалось заархивировать около 10 млн строк и построить внешнюю таблицу из первоначального выбора из 7 соединений.Это упростило использование Solr запросов, поэтому выбор * из 1 таблицы.
Теперь индексируем 35-метровые строки, используя Select * from ONE_BIG_ External -TABLE, и это занимает ~ 4-5 часов@ 2,3 тыс. Документов / с + -250.Поскольку мы используем внешнюю таблицу, нам не следует слишком быстро снимать снимок из-за стека UNDO.
У нас есть 77 столбцов, которые мы индексируем.
Итак, мы нашли решение для нашей первоначальной проблемы, но теперь я стремлюсь увеличить скорость индексации при выполнении чистых операций заполнения.,
Ссылка на SolrPerformanceFactors Я пробовал:
- Размеры партии:
- 2000 - без изменений
- 6000 - без изменений
- 4000 - без изменений
Пример:
<dataSource jndiName="xxxxxx batchSize="2000" type="JdbcDataSource"/>
- Autocommit:
- Каждый 1 час- без изменений
- MergeFactor:
- 20 против 10 по умолчанию - сбросить 20 минут
- Индексированные поля:
- Вырежьте 11 проиндексированных полей - ничего
РЕДАКТИРОВАТЬ: Добавление некоторой информации по вопросам ниже.Я делал авто-коммиты каждый час, который не помог никому.Также мягкий коммит каждую секунду.Я скопировал гораздо меньшее ядро solr, которое у нас здесь, с этими параметрами, и они сказали, что они работают хорошо.
<autoCommit>
<maxTime>3600000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
<autoSoftCommit>
<maxTime>1000</maxTime>
</autoSoftCommit>
Есть ли какие-то ошибки, которые я пропускаю, кроме броска оборудования на это?Дайте мне знать, если вам нужно больше информации, я постараюсь отвечать на вопросы так хорошо, как мне позволено.