有时我的Apache Solr会崩溃,这会在日志文件中发送垃圾邮件:
Sep 24, 2013 1:00:21 AM org.apache.solr.common.SolrException log
SEVERE: java.lang.OutOfMemoryError: Java heap space
我的Solr安装的专用服务器有足够的可用内存(16GB),可能导致这种情况?我已经尝试了一些Google Fu,但没有确切的答案为什么,或者如何解决除了使用-Xmx512mb来提高允许的堆大小,我认为这不是最理想的方法?我错了。
我正在使用我的Solr安装Jetty,有没有办法告诉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没有使用其他免费的RAM。
答案 0 :(得分:1)
来自文档link
solr中的内存使用情况:
解决内存不足异常
解决此错误的最简单方法,假设Java虚拟机尚未完成 使用你所有的物理内存,就是增加分配给你的内存量 运行Solr的Java虚拟机。为Solr中的示例/执行此操作 分发,如果您运行的是标准Sun虚拟机,则可以使用-Xms和-Xmx命令行参数:
java -Xms512M -Xmx1024M -jar start.jar
根据输入值使用值