如何在Windows Bitnami堆栈上为Solr 4.5设置JVM堆大小?

时间:2013-10-19 23:15:03

标签: java solr jvm-arguments bitnami

TL; DR

我在Windows Server R2 64位计算机上安装了Apache Solr,内存为8 GB。默认情况下,JVM似乎使用~256 MB的内存。由于我有一些非常大的文件用于索引,有时我得到Java堆空间OutOfMemoryError。

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

更多详情

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

我尝试过几件事:

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

下面是Solr的仪表板截图。

Solr dashboard screenshot

有什么想法吗?

更新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 ......)以及语法应该是什么?

2 个答案:

答案 0 :(得分:7)

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

我之前尝试过修改该文件,但是在进行任何更改之后需要重新安装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

答案 1 :(得分: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/#/您会看到有效的新值。