Apache Solr间歇性地关闭

时间:2013-09-24 09:15:23

标签: java solr jetty

有时我的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。

1 个答案:

答案 0 :(得分:1)

来自文档link

solr中的内存使用情况:

  • 所有文档的字段必须同时适合内存。
  • 输入XML中的每个单独的...标记必须适合内存

解决内存不足异常

  • 解决此错误的最简单方法,假设Java虚拟机尚未完成 使用你所有的物理内存,就是增加分配给你的内存量 运行Solr的Java虚拟机。为Solr中的示例/执行此操作 分发,如果您运行的是标准Sun虚拟机,则可以使用-Xms和-Xmx命令行参数:

    java -Xms512M -Xmx1024M -jar start.jar
    

根据输入值使用值