SAP Hybris - Tomcat忽略内存设置

3

我正在运行本地安装的SAP Hybris 1811。我试图增加其内存大小,因为在SOLR索引作业期间出现了OutOfMemory异常。

然而,我无法通过任何我尝试过的方法可靠地增加内存。有时经过多次尝试(构建应用程序多次、重新启动等)后,Hybris能够看到并使用设置的内存(我使用backoffice进行检查),但大多数情况下它会默认为2 GB,并很快耗尽内存。

我尝试过以下方法:

  • catalina.bat中设置set JAVA_OPTS=-Xms10G -Xmx10G;
  • local.properties中设置tomcat.javaoptions=-Xmx10G -Xms10G

可靠地为本地Hybris服务器设置更高的内存的正确方法是什么?

2个回答

13

请尝试在您的local.properties中执行以下操作:

tomcat.generaloptions=-Xmx10G -ea -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=true -Djava.endorsed.dirs="%CATALINA_HOME%/lib/endorsed" -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Dfile.encoding=UTF-8  -Djava.util.logging.config.file=jdk_logging.properties -Djava.io.tmpdir="${HYBRIS_TEMP_DIR}"
请在进行此更改后务必执行ant。总体而言,每当您进行与tomcat相关的任何更改时,都需要执行ant
对于生产环境,您可以按如下方式设置此属性:
java.mem=10G
tomcat.generaloptions=-Xmx${java.mem} -Xms${java.mem} -Xss256K -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark  -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:"${HYBRIS_LOG_DIR}/tomcat/java_gc.log" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dorg.tanukisoftware.wrapper.WrapperManager.mbean=true -Djava.endorsed.dirs=../lib/endorsed -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Dfile.encoding=UTF-8 -Djava.util.logging.config.file=jdk_logging.properties -Djava.io.tmpdir="${HYBRIS_TEMP_DIR}" -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000

“ant server”是一个最小的命令,它将使用修订后的“local.properties”配置更新服务器,而无需通过“ant”运行所有任务。 - quickshiftin
@quickshiftin 我一直使用 ant deploy 快速应用 Tomcat 配置更改。 - Wade-0

4
经过一番调查,我发现只有当我尝试使用debug参数运行Hybris服务器时,内存限制才被忽略。 我发现,我尝试使用tomcat.javaoptions设置的属性未包含在wrapper-debug.conf文件中,而该文件在以调试模式启动服务器时使用。
简言之: tomcat.javaoptions仅应用于默认的wrapper.conf文件,并且在使用任何参数(例如debug)启动服务器时将被忽略。
要使更改应用于wrapper-debug.conf,需要使用tomcat.debugjavaoptions属性。
最终,我的配置文件包含了可行的内存限制,如下所示:
...
tomcat.javaoptions=-Xmx10G -Xms5G
tomcat.debugjavaoptions=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=n -Xmx10G -Xms5G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接