Solr всегда использует более 90% физической памяти

у меня есть 300000 документов, хранящихся в индексе solr. И использовал 4 ГБ ОЗУ для сервера solr. Но он потребляет больше, чем 90% физической памяти. Поэтому я перешел к своим данным на новый сервер, который имеет 16 ГБ. Снова solr потребляет больше, чем 90% память. Я не знаю, как решить эту проблему. Я использовал MMapDirectory по умолчанию и solr версии 4.2.0. Объясните мне, если у вас есть какое-либо решение или причина для этого.

2 ответов


MMapDirectory пытается использовать память ОС (кэш ОС) в полной мере, насколько это возможно, это нормальное поведение, он попытается загрузить весь индекс в память, если он доступен. На самом деле, это хорошо. Поскольку эта память доступна, она попытается использовать ее. Если другое приложение на той же машине требует больше, OS выпустит его для него. Это одна из причин, почему Solr / Lucene запросы на порядок быстры, так как большая часть вызова на сервер заканчивается памятью (в зависимости от размера память), а не диск.

память JVM-это другое, ее можно контролировать, только РАБОЧИЕ объекты ответа на запрос и некоторые записи кэша используют память JVM. Таким образом, размер JVM может быть настроен на основе запроса номера и записей кэша.


какое значение-Xmx вы используете при вызове jvm? Если вы не используете явное значение, jvm установит его на основе функций машины.

Как только вы дадите максимальное количество кучи Solr, solr потенциально будет использовать все это, если это необходимо, вот как это работает. Если вы ограничиваете использование 2GB - Xmx=2000m при вызове jvm. Не уверен, насколько велики ваши документы, но 300k docs будут считаться небольшим индексом.