Перейти к основному контенту

Настройка производительности индексирования

Индексирование выполняетор (задача archive.search.index) —ся отдельныой шзаг конвдачейера: иarchive.search.index. Импортёр сохраняет письмо и устанавливает time_archived, после чего индексатор выбирает записьмаи с time_indexed=0 и отправляет их в Solr. Если индексатор не успеобрабатывает зписьма медленнее, чем они постоком имупораюта, backlogочередь растёт —и новые письма появляются в поиске с задержкой.

Параметры настройки

Параметр Где задаётся DefaultПо умолчанию ОписНазначение
KLVD_INDEXER_WORKERS ENVпеременная (docker-compose)окружения Docker Compose 4 Пчисло параллельных потоков извлечения текста вложений (через Solr Cell /update/extract)extract. Каждый поток имеспользует отдельное собствединенныйие CURL*curl с keep-alive.alive (!)
index_batch_size config.settings, (WUI → [Общие настройки)] 100 Пчисло писем, звыбираемых однинм SELECT +и отправляемых одним пакетным batchHTTP-запросом HTTP /update в Solr. БоУвельшичение =снижает меньшечисло round-trips,запросов, но повышает потребольшение память на один запрос. MaxМаксимум 1000.— 1000
SOLR_HEAP ENVпеременная (docker-compose)окружения Docker Compose 4096m размер памяти JVM heap(!) Solr. Увеличение может потребоваться, если backlogочередь индексирования растёт и Solr CPU-boundограничен (mergesпроизводительностью CPU во время слияния се успгментовают).
autoSoftCommit ENV SOLR_OPTS 10с Кзадержка бдо появления новыстрох документыов св результановятся видимыми вах поискеа. Меньше = быстрее взначение сокращает задноержку, но большчаще CPUпереоткрывает поисковый индекс и повышает нагрузку на searcher reopen.CPU
ramBufferSizeMB solrconfig.xml, (требуется пересборка klvd-solr)solr 512 RAM-размер буфера в переамяти до flushзаписи сегмента на диск. БоУвельшичение = уменьшает число сегментов, ми операций их слияньше merge storm.ия
mergeFactor solrconfig.xml, (требуется пересборка klvd-solr)solr 25 Скочислько сегментов, mergeобъединяемых за одну операзцию. БоУвельшичение = уменьшает merge-число операций слияния подри batch-пакетнагрузкой. индексации

Рекомендации по числу vCPU

vCPU KLVD_INDEXER_WORKERS SOLR_HEAP Примечанение
4 2 2048m Мминимальная конфигурация
8 4 4096m Ррекомендуемая конфигурация для productionрабочей эксплуатации
16+ 8 8192m Ввысокая нагрузка, мни богльшое количество вложений

KLVD_INDEXER_WORKERS не должен превышать кочисличество vCPUvCPU. — кКаждый worker срабоздаётчий поток, квыпоторый деланяет HTTP-запросы к Solr и псотребляездаёт CPUнагрузку как на стороне узелы Клавдия, так и на стороне Solr.

trade-off

Выбор autoSoftCommit

  • Меньше1–3 (1-3с)с — новые документы быстрее появляются в поиске быстрее, но searcherSolr reopen кчаждыще 1-3спереоткрывает поисковый индекс и сильнее нагружает CPU Solr.CPU. Подходит для интерактивнбольшого поиска с малым потокома импорта, когда важна минимальная задержка поиска.
  • Больше10–15 (10-15с)с — мснижает ньше CPUагрузку на reopen,CPU и повышает throughputпропускную способность индексировацнии.я, Дно новые документы могут появляються в поиске с задержкой до 15с15 секунд. Подходит для массового импорта (бенчмарк,и начальнаяой загрузкаи архива).
  • При crashаварийном завершении Solr — документы, находившиеся в updateLog (не закоммиченные), восстанавливаются просле запуска. Записи старте Solr. time_indexed=0 в PGPostgreSQL гостаются в очерантедир и буедут переоиндексировациюны повторно, если часто-тоь потерялось. Дданныех не тпопала в индеряюткся.

Когда увеличивать SOLR_HEAP

Рассмотрите увеличение SOLR_HEAP, если выполняются следующие условия:

  • Backlogочередь индексироваторания растёт, ноа KLVD_INDEXER_WORKERS уже =соответствует vCPUчислу → Solr CPU-bound.vCPU;
  • Вв журналогахе Solr частыо фиксируется слияние сегментов и текущего объёма памяти недостаточно для mergedramBufferSizeMB;
  • segment
  • колонка [JVM Heap] (merge storm) → heap(!) в [Инстансы SolrCloud] или /solr/admin/info/system показывает устойчивую не хватку памяти и длитетльные нпаузы ramBufferSizeMB.сборки мусора.
curl http://<solr>:8983/solr/admin/cores?action=STATUS → memory б

Еслизко к SOLR_HEAP → увеличение памятьи heap(!) илиневозможно, уменьшитье ramBufferSizeMB.ramBufferSizeMB

reindex(!)-allи повторно оцените производительность.

Применение изменений solrconfig.xml ко всему индексу

[Сбросить поиск] удаляет поисковый индекс. Перед сбросом проверьте доступность исходных данных архива и согласуйте период недоступности полнотекстового поиска. Для одного изменения solrconfig.xmlSOLR_HEAP сброс и переиндексация не требуются.

Изменениея mergeFactor/ и ramBufferSizeMB применяеются только к новым сегментам. Существующий индекс не переформируется автоматически не перестраивается.

Для

Чтобы применить новыения параметры ко всему индексу:

  1. Изменитье solrconfig.xml, и пересобераитье образ klvd-solr.
  2. В разделе [Поиск (Solr)] выполните [Сбросить поиск (раздел [Поиск (Solr)] → «Сбросить поиск»).
  3. ЗаВыпустолнитье «[Реиндексировать ВСЁ»].
  4. —

После переиндексации пвсер сегменты будут создастсяны с новой конфигурацией.

Связанные материалы

  • {{ССЫЛКА:maintenance.solr-tuning|Solr: эксплуатационная настройка}} — память JVM и граметрницами. 31 ГБ

Навигация по книге