Согласно Solr FAQ: Что означает "превышен лимит maxWarmingSearchers = X"?
Если вы часто сталкиваетесь с этой ошибкой, вы можете (теоретически) увеличить
число в ваших maxWarmingSearchers, но это рискованно делать, если вы
уверены, что у вас есть системные ресурсы (RAM, CPU и т. д.), чтобы сделать
это безопасно. Более правильный способ справиться с ситуацией - это уменьшить
как часто вы отправляете коммиты.
Что означает эта ошибка, так это то, что вы в основном делаете коммиты слишком часто, и внутренний кеш не может справиться с частотой, которую вы говорите: «очистите кеш и позвольте мне искать новые данные». Вам нужно уменьшить частоту коммитов. Вы можете найти больше информации об этой проблеме здесь в Настройка поиска в реальном времени , но основная идея заключается в том, что чем больше граней вы используете, тем больший интервал вам понадобится между коммитами.
Одним из способов обойти это было то, что я перестал делать ручные коммиты (то есть, когда мое приложение отправляло данные в solr, а затем выполнял запрос на фиксацию) и включал solr autocommit .
Вот пример:
<!-- solrconfig.xml -->
<autoCommit>
<maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered -->
<maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered -->
<openSearcher>false</openSearcher> <!-- SOLR 4.0. Optionally don't open a searcher on hard commit. This is useful to minimize the size of transaction logs that keep track of uncommitted updates. -->
</autoCommit>
Вам нужно будет выяснить, какой интервал вам понадобится (т.е. maxTime
), но на практике каждый раз, когда я добавляю в приложение более граненый поиск (или больше индексов, или что у вас), я должен увеличивать интервал .
Если вам нужен больший поиск в реальном времени, чем позволяет частота этих коммитов, вы можете посмотреть Solr soft commits .