2013-09-24 4 views
2

Иногда мой Apache Solr будет просто идти вниз, и это спам в файлах журнала:Apache Solr периодически выключается

Sep 24, 2013 1:00:21 AM org.apache.solr.common.SolrException log 
SEVERE: java.lang.OutOfMemoryError: Java heap space 

Выделенный сервер мой Solr установить на есть много свободной оперативной памяти (16 Гб), то, может быть причиной этого? Я пробовал некоторые Google Fu, но без твердого ответа о том, почему, или как исправить, за исключением использования -Xmx512mb, чтобы повысить допустимый размер кучи, который, как я считаю, не является самым идеальным методом? Я могу ошибаться.

Я использую Jetty с моей установкой Solr, есть ли способ сказать Jetty использовать больше памяти? или сообщить, как разрешить эту ошибку, если это произойдет снова.

Дополнительная информация: Дело в том, что я устанавливаю любые большие значения Xms или Xmx, даже если он находится в моей свободной памяти, оставшейся на сервере, который я получаю. Недостаточно памяти для Java Runtime Environment для продолжения.

# Out of Memory Error (allocation.inline.hpp:58), pid=10851, tid=47145744939328 
# 
# JRE version: 7.0_11-b21 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04 mixed mode linux-amd64 compressed oops) 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 

VM Arguments: 
jvm_args: -Dsolr.solr.home=/opt/solr/solr -Xmx64m -Djetty.logs=/var/log/solr -Djetty.home=/root/wmv_solr -Djava.io.tmpdir=/tmp -Xmx256m 
java_command: /root/wmv_solr/start.jar /root/wmv_solr/etc/jetty-logging.xml /root/wmv_solr/etc/jetty.xml 
Launcher Type: SUN_STANDARD 

Environment Variables: 
JAVA_HOME=/usr/java/jdk1.7.0_11 
CLASSPATH=.:/usr/java/jdk1.7.0_11/lib/classes.zip 
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_11/bin:/opt/ant/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin 
SHELL=/bin/bash 

/proc/meminfo: 
MemTotal:  4033216 kB 
MemFree:  755528 kB 
Buffers:  274004 kB 
Cached:  1939244 kB 
SwapCached:  168388 kB 
Active:  1923800 kB 
Inactive:  1052876 kB 
HighTotal:   0 kB 
HighFree:   0 kB 
LowTotal:  4033216 kB 
LowFree:  755528 kB 
SwapTotal:  4980024 kB 
SwapFree:  4784124 kB 
Dirty:   2092 kB 
Writeback:   0 kB 
AnonPages:  762616 kB 
Mapped:   39044 kB 
Slab:   256200 kB 
PageTables:  17496 kB 
NFS_Unstable:  0 kB 
Bounce:    0 kB 
CommitLimit: 6996632 kB 
Committed_AS: 1964148 kB 
VmallocTotal: 34359738367 kB 
VmallocUsed: 265936 kB 
VmallocChunk: 34359471775 kB 
HugePages_Total:  0 
HugePages_Free:  0 
HugePages_Rsvd:  0 
Hugepagesize:  2048 kB 

Это все еще продолжается проблема, и мы уже видим новый тип ошибки в журналах:

Oct 02, 2013 7:14:10 AM org.apache.solr.common.SolrException log 
SEVERE: java.lang.OutOfMemoryError: GC overhead limit exceeded 

Мы смотрим на модернизацию наших серверов RAM в надежде, что это позволит решить наши но это не объясняет, почему SOLR не использует свободную ОЗУ.

ответ

1

Из документации link

использования памяти в Solr:

  • Все полей документа должны одновременно поместиться в памяти.
  • Каждый ... тег во входном XML должен вписываться в памяти

Решая из исключения памяти

  • Самый простой способ борьбы эту ошибку, предполагая, что виртуальная машина Java ISN» t уже , используя всю вашу физическую память, заключается в увеличении объема памяти, выделенной виртуальной машине Java , работающей с Solr. Для того, чтобы сделать это на примере/в распределении Solr , если вы используете стандартную виртуальную машину Sun, вы можете использовать -Xms и -Xmx параметры командной строки:

    java -Xms512M -Xmx1024M -jar start.jar 
    

Играть с значения в зависимости от вашего ввода

+0

Дело в том, что я устанавливаю большие значения Xms или Xmx, даже если он находится в моей свободной памяти, оставшейся на сервере, который я получаю. Недостаточно памяти для Java Runtime Environment для продолжения. –

+0

, если у вас достаточно памяти, чтобы дать, может быть, вы запускаете 32-битный jvm? –

+0

Определенно установлена ​​64-битная версия, можно ли запустить 32 под 64-й установкой? если да, то как я могу проверить это не так? –