Я подумал, что стоит опубликовать ответ здесь, хотя я также ответил на следующий вопрос почти таким же образом:
Не удается записать задержку QUEUE в n минут — DSE
Когда узел Solr принимает записи, он не только должен принимать записи в обычный путь записи Cassandra, но также должен принимать записи в путь записи Solr. Происходит уплотнение Cassandra, а также эквивалент Solr (слияние Lucene). Сжатие и слияние очень дорого обходятся дисковому вводу-выводу.
По умолчанию параметр dse.yaml
будет иметь закомментированный параметр max_solr_concurrency_per_core
, это может означать, что слишком много потоков назначено вашей индексации в ядрах solr.
Сообщение, на которое ссылается @phact в блоге выше, действительно хорошее место для начала. Мониторинг IndexPool
mBean — хорошее место для начала проверки. Проверьте QueueDepth
и посмотрите, увеличивается ли он, если да, то узел не может справиться с пропускной способностью индексации, и пришло время посмотреть на ЦП и ввод-вывод. Если вы не видите высокую загрузку ЦП, вы можете увеличить параллелизм.
В больших кластерах, как правило, высокая скорость приема выполняется в контроллере домена с узлами Cassandra, которые реплицируются на узлы Solr в своем собственном контроллере домена. Подобное разделение рабочей нагрузки также может быть хорошим решением для вас.
Еще одна вещь - это размер вашего индекса, уменьшение размера таких вещей, как текстовые поля, путем установки вещей omitNorms=true
в схеме также может значительно уменьшить размер индекса.
Ниже я опубликую несколько ссылок на документы, которые могут вам помочь.
https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchTune.html
https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchCmtQryMbeans.html
person
markc
schedule
13.10.2016