Solr использует слишком много памяти

У нас есть экземпляр Solr 3.4, работающий на Windows 2008 R2 с Oracle Java 6 Hotspot JDK, который перестает отвечать на запросы. Когда мы посмотрели на машину, мы заметили, что доступная физическая память обнулилась.

Процесс Tomcat7.exe использовал ~70 гигабайт (частный рабочий набор), но рабочий набор (память) использовал всю память в системе. Ошибок в логах Tomcat/Solr не было. Мы использовали VMMap, чтобы определить, что память использовалась для сопоставления памяти с файлами сегментов Solr.

Перезапуск Tomcat временно устранил проблему, но в конце концов она вернулась.

Затем мы попытались уменьшить размер JVM, чтобы освободить место для отображаемых в память файлов, но тогда Solr в конечном итоге перестает отвечать на запросы старого поколения на 100%. Снова сброс устранил проблему, но перед сбросом не возникло исключение нехватки памяти.

В настоящее время наше паучье чутье подсказывает нам, что кэш не сжимается при нехватке памяти, и что, возможно, существует слишком много буферов MappedByteBuffers, так что ОС не может освободить память от отображаемых в память файлов.

10
задан jpountz 27 March 2012 в 22:06
поделиться