Я ищу несколько советов по выделению памяти для Java на Tomcat 7, работающем Solr: -)
Вот факты:
- Работает Solr 1.4.1 с приблизительно 20 миллионами элементов различных размеров в индексе.
- Индекс при усечении составляет приблизительно 40-45 ГБ большой.
- Приблизительно 40000-60000 статей добавляются в индекс каждый месяц .Статьи различаются по размеру, от пары КБ до 15-20 КБ.
- Приблизительно 5000-8000 изображений добавляются в индекс каждый месяц .(На самом деле не сами изображения, а некоторые метаданные).
Особенности конфигурации Solr:
- mergeFactor 10
- ramBufferSizeMB 128 МБ
- maxMergeMB 1024,0 МБ
При полной переиндексации (на сервере Win 2007 с процессором Intel Xeon (4 ядра) + 6 ГБ памяти) индексирование записей в дневнике занимает около 3,5 часов ииндексация изображений занимает около 4,5 часов.
Однако мы обновили индексный сервер до 12 ГБ памяти и назначили Java 6144 МБ для максимального пула памяти , Начальный пул памяти: 1024 МБ .
При перезапуске Apache Tomcat требуется приблизительно 5-10 минут для достижения ~ 5 ГБ использования памяти.Еще час или два, и он преодолевает барьер 6 ГБ и остается там.
Когда у нас был барьер 2 ГБ с использованием 32-разрядного Apache, мы получили OutOfMemoryError: Java Heap Space через 1-1,5 недели.3 ГБ добавляются, возможно, до 2-3 недель.
Сейчас мы запустили Solr на 64-битном Apache и Java с 6 ГБ, выделенными на пару дней.Пока проблем нет.
Учитывая вышеприведенные факты, что бы вы сделали, чтобы обрезать индекс Solr и настроить использование памяти?