FATAL: INTERNAL ERROR

Выросла база данных до 70G и при индексации стала появляется:
indexing table ‘products1’…
collected 32784925 docs, 6998.1 MB
creating lookup: 32784.9 Kdocs, 100.0% done
sorted 985.6 Mhits, 100.0% done
FATAL: INTERNAL ERROR: dictionary size 4958540383 overflow at infix save

Кто знает как побороть?

варианты:

  • разбить index на несколько индексов локальных индексов и обединить в демоне в distributed index
  • отключить infix \ min_infix_len опцию в индексе
  • перейти с dict = keywords на dict = crc - только размер индекса и время генерации его увеличится

Спасибо! разбил на 3 части

При distributed у меня почему то нагрузка на CPU 100% по всем ядрам, в manticoresearch 5 и 6
pseudo_sharding = 0
Ищу другой вариант
Так же с pseudo_sharding = 1 тоже всегда большая нагрузка на CPU даже при 10М записей.
С маленькими базами 200-300К проблем нет

Так нагрузка 100% на всех ядрах, хоть на 1000 штук может быть и при 100 документах. Весь вопрос в том полезная это нагрузка или нет. Если она обеспечивает требуемую пропускную способность и время отклика - всё ок. Если не обеспечивает - не ок.

протестировал:
CPU 32 потока
15M записей Примерная нагрузка около 5-20 запросов с секунду

  1. C pseudo_sharding = 1 CPU по всем потокам ~90% (2900%)
  2. С pseudo_sharding = 0 - CPU на ядро 3-5% (100-150%)
  3. С pseudo_sharding = 1 При включении distributed на 3 части вообще грузит по всем потокам 100% (3200%)

Когда CPU больше нагружен от pseudo_sharding или distributed, время отклика меньше?

от distributed

Я имел в виду, что измерьте все показатели, а не только нагрузку на CPU:

  • пропускная способность
  • среднее время отклика
  • нагрузка

Например, даёте 20 запросов всегда одновременно работающих (concurrency=20) - получаете, допустим:

  • 15 запросов в секунду завершаются
  • среднее время у них 0.5 сек
  • проц нагружен на 90%

Или по-другому: даёте 15 запросов в секунду всегда и смотрите что случится через N секунд: вывезет система эти 15 запросов в секунду или нет. И если вывезет, то какое получится время отклика. Вывозит - увеличиваете rps. Yandex tank можете попробовать для таких экспериментов или типа того.