2

有时我的 Apache Solr 会宕机,这会在日志文件中发送垃圾邮件:

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

我安装 Solr 的专用服务器有大量可用 RAM (16gb),这可能是什么原因造成的?我已经尝试了一些 Google Fu,但没有确切的答案来解释为什么,或者如何解决除了使用 -Xmx512mb 来提高允许的堆大小,我认为这不是最理想的方法?我可能是错的。

我在安装 Solr 时使用 Jetty,有没有办法告诉 Jetty 使用更多内存?或者告诉它如果再次发生此错误如何解决。

额外信息:问题是,如果我设置了任何大的 Xms 或 Xmx 值,即使它在我留在服务器上的可用内存之内,我也会得到 Java 运行时环境无法继续运行的内存不足。

#  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。

4

1 回答 1

1

从文档链接

solr 中的内存使用情况:

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

解决内存不足异常

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

    java -Xms512M -Xmx1024M -jar start.jar
    

根据您的输入使用值

于 2013-09-24T09:44:42.653 回答