1

TL;博士

我在具有 8 GB RAM 的 Windows Server R2 64 位机器上安装了Apache Solr 。默认情况下,JVM 似乎使用了 ~256 MB 的内存。因为我有一些相当大的文件用于索引,所以有时我会得到 Java 堆空间 OutOfMemoryError。

我应该如何增加 Solr 可用的内存大小?

更多细节

我在网上找到的大多数文档/帖子都指向类似的东西java -Xms1024m -Xmx2048m -jar start.jar,但我没有通过命令行运行 Solr。它作为 Windows 服务运行。我想有一个配置选项可以在 Solr 安装文件夹中的某个地方设置它,但我找不到它(此外,对 Java 堆栈不是很熟悉,因为我是一个 .NET 开发人员)。

我尝试了几件事:

  • 在中设置环境变量/Bitnami/solr-4.5.0-0/scripts/setenv.batset JAVA_OPTS="%JAVA_OPTS% -XX:MaxPermSize=1024m -Xms1024 -Xmx1024m"
  • 修改/Bitnami/solr-4.5.0-0/scripts/serviceinstall.bat并尝试在JvmOptions命令行中添加参数以安装 Jetty 服务(同样,这里不熟悉语法)。基于 Ubuntu 的安装有类似的答案,但脚本文件不同。
  • 运行/Bitnami/solr-4.5.0-0/serviceinstall.bat REMOVEserviceinstall.bat INSTALL在上述更改之后

下面是 Solr 的仪表板屏幕截图。

Solr 仪表板屏幕截图

任何想法?

更新 1

有一个serviceinstall.bat文件/Bitnami/solr-4.5.0-0/apache-solr/scripts/包含我尝试修改但未能获得预期结果的 Jvm 选项。这是文件中的那一行(添加换行符以更好地显示):

"D:\BitNami\solr-4.5.0-0/apache-solr\scripts\prunsrv.exe" //IS//solrJetty 
--DisplayName="solrJetty" 
--Install="D:\BitNami\solr-4.5.0-0/apache-solr\scripts\prunsrv.exe" 
--LogPath="D:\BitNami\solr-4.5.0-0/apache-solr\logs" 
--LogLevel=Debug 
--StdOutput=auto 
--StdError=auto 
--StartMode=Java 
--StopMode=Java 
--Jvm=auto 
++JvmOptions=-DSTOP.PORT=8079 
++JvmOptions=-DSTOP.KEY=s3crEt 
++JvmOptions=-Djetty.home="D:\BitNami\solr-4.5.0-0/apache-solr" 
++JvmOptions=-Dsolr.solr.home="D:\BitNami\solr-4.5.0-0/apache-solr/solr" 
--Jvm=auto 
++JvmOptions=-Djetty.logs="D:\BitNami\solr-4.5.0-0/apache-solr\logs" 
--JavaHome="D:\BitNami\solr-4.5.0-0\java" 
++JvmOptions=-XX:MaxPermSize=128M 
--Classpath="D:\BitNami\solr-4.5.0-0/apache-solr\lib\*";"D:\BitNami\solr-4.5.0-0/apache-solr\start.jar" 
--StartClass=org.eclipse.jetty.start.Main 
++StartParams="D:\BitNami\solr-4.5.0-0/apache-solr\etc\jetty.xml" 
--StopClass=org.eclipse.jetty.start.Main 
++StopParams=--stop 
++StopParams=-DSTOP.PORT=8079 
++StopParams=-DSTOP.KEY=s3crEt

有谁知道在哪里放置额外的 JvmOptions (Xmx, Xms ...) 以及语法应该是什么?

4

2 回答 2

7

经过更多研究,我设法通过/Bitnami/solr-4.5.0-0/apache-solr/scripts/serviceinstall.bat根据@rchukh 的评论修改脚本来增加堆大小。

我之前尝试过修改该文件,但是在进行任何更改后需要重新安装 Solr 服务。问题是我尝试使用/Bitnami/solr-4.5.0-0/serviceinstall.bat. 该批处理脚本应该serviceinstall.bat在所有子文件夹中运行所有其他脚本,但是它没有运行我需要的那个。

所以,这就是我的/Bitnami/solr-4.5.0-0/apache-solr/scripts/serviceinstall.bat脚本现在的样子(为了便于阅读,更长的行被打破):

@echo off
rem -- Check if argument is INSTALL or REMOVE

if not ""%1"" == ""INSTALL"" goto remove

"D:\BitNami\solr-4.5.0-0/apache-solr\scripts\prunsrv.exe" //IS//solrJetty 
--DisplayName="solrJetty" 
--Install="D:\BitNami\solr-4.5.0-0/apache-solr\scripts\prunsrv.exe" 
--LogPath="D:\BitNami\solr-4.5.0-0/apache-solr\logs" 
--LogLevel=Debug 
--StdOutput=auto 
--StdError=auto 
--StartMode=Java 
--StopMode=Java 
--Jvm=auto 
++JvmOptions=-DSTOP.PORT=8079 
++JvmOptions=-DSTOP.KEY=s3crEt 
++JvmOptions=-Djetty.home="D:\BitNami\solr-4.5.0-0/apache-solr" 
++JvmOptions=-Dsolr.solr.home="D:\BitNami\solr-4.5.0-0/apache-solr/solr" 
--Jvm=auto 
++JvmOptions=-Djetty.logs="D:\BitNami\solr-4.5.0-0/apache-solr\logs" 
--JavaHome="D:\BitNami\solr-4.5.0-0\java" 
++JvmOptions=-XX:MaxPermSize=256M 
++JvmOptions=-Xms1024M 
++JvmOptions=-Xmx1024M 
--Classpath="D:\BitNami\solr-4.5.0-0/apache-solr\lib\*";
            "D:\BitNami\solr-4.5.0-0/apache-solr\start.jar" 
--StartClass=org.eclipse.jetty.start.Main 
++StartParams="D:\BitNami\solr-4.5.0-0/apache-solr\etc\jetty.xml" 
--StopClass=org.eclipse.jetty.start.Main 
++StopParams=--stop 
++StopParams=-DSTOP.PORT=8079 
++StopParams=-DSTOP.KEY=s3crEt

net start solrJetty >NUL
goto end

:remove
rem -- STOP SERVICE BEFORE REMOVING

net stop solrJetty >NUL
sc delete solrJetty

:end
exit

修改该脚本后,您需要通过运行两次来重新安装该服务(删除和安装):

D:/Bitnami/solr-4.5.0-0/apache-solr/scripts/serviceinstall.bat REMOVE
D:/Bitnami/solr-4.5.0-0/apache-solr/scripts/serviceinstall.bat INSTALL
于 2013-10-21T14:27:58.550 回答
1

你可以改变Bitnami\solr-5.2.1-1\apache-solr\bin\solr.in.cmd。有一行说:

set SOLR_JAVA_MEM=-Xms512m -Xmx512m

将其更改为

set SOLR_JAVA_MEM=-Xms2g -Xmx2g

然后你需要重启服务:

net stop solrJetty 
net start solrJetty 

转到: http://localhost:8983/solr/#/您将看到新值生效。

于 2016-06-09T11:10:54.300 回答