Мы используем Apache Solr 3.5 для поиска нашего каталога по каталогу. Мы используем функцию свертывания поля с несколькими осколками, каждый из которых поддерживает кластер только для чтения.Недостаточно памяти на всех раверах Solr того же осколка
В последнее время мы столкнулись с ошибками Ошибки памяти для всех подчиненных определенного осколка. Мы используем поле, свернувшееся на конкретном поле, которое имеет только одно конкретное значение для всех документов осколка, чьи подчиненные устройства вышли из памяти. Интересно, что ошибка «Недостаточная память» повторялась несколько раз в течение дня (около 4 раз за 24 часа) без какого-либо значительного отклонения трафика от нормального. Максимальный размер кучи, назначенный каждому подчиненному устройству, составляет 8 Гб на машине 16 Гб.
С тех пор мы сделали следующее, и проблема будет арестован сейчас -
- Добавлено более горизонтальных рабов к проблеме причиняя подчиненной группы, от 3 мы привели это до 6.
- Мы увеличили интервал опроса репликации с 5 минут до 20 минут. Мы выяснили, что фоновый процесс SolrSearchIndexer.warm потребляет максимальное количество кучи (около 6 Гб), точно когда запросы начинают выходить из памяти. Поскольку интервал репликации вызывает потепление поисковиков, мы думали об увеличении частоты.
- Мы уменьшили минимальное распределение кучи на tomcat на всех подчиненных этой группе до 1 ГБ. Раньше это было 4Gb.
- Один из 3-х проблемных рабов имел ошибки write.lock на неиспользуемом ядре. С тех пор мы удалили неиспользуемое ядро на всех подчиненных, поскольку оно было реплицировано из другого мастера Solr. В неиспользуемом ядре было около 1,5 миллионов документов, которые потребляют около 605 Мб на диске.
- Мы отбросили весь индекс на всех подчиненных и воспроизвели все с нуля. Кстати, у одного из рабов был необычно большой размер индекса на диске - 2,2 Гб по сравнению с 1 Гб на других подчиненных.
Типичный размер индексной директории в проблеме осколка составляет около 1 ГБ, всего около 1 миллиона документов. Прослушивание средних запросов составляет около 10 секунд для каждого ведомого.
Мы попытались воспроизвести все журналы в течение дня в тестовой среде, но как-то тестовый solr никогда не выходит из памяти с одинаковыми настройками кучи. Честно говоря, мы не уверены, что этого больше не повторится.
Может кто-нибудь сказать, что может быть проблемой здесь? Любая помощь будет принята с благодарностью.
Спасибо,
Tushar
Мы не изменили количество Искателей по умолчанию. Это конфигурация кэша, которую мы используем: 60 queryResultWindowSize> –
Tushar
Сколько у вас полей? Сколько фреймов полей определено? Каждый фасет поля означает кеш поля. Каков средний размер документа? 1K? 100К? 1Mb? BTW, 4096 фильтров составляет около 500 МБ для 1 млн. Документов. 65536 кэшированные документы могут быть довольно большими. – lexk