【问题标题】:SAP Hybris - Tomcat ignoring memory settingsSAP Hybris - Tomcat 忽略内存设置
【发布时间】:2020-01-28 23:27:31
【问题描述】:
我正在本地安装 SAP Hybris 1811。我正在尝试增加其内存大小,因为我在 SOLR 索引作业期间遇到了 OutOfMemory 异常。
但是,我无法通过我尝试过的任何方法可靠地增加内存。有时经过很多努力(多次构建应用程序,重新启动等)Hybris 能够看到并使用设置的内存(我使用后台检查),但大多数时候它默认为 2 GB 并且内存不足很快。
我尝试过的:
-
set JAVA_OPTS=-Xms10G -Xmx10G; 在catalina.bat
-
tomcat.javaoptions=-Xmx10G -Xms10G 在local.properties
为本地 Hybris 服务器可靠地设置更高内存的正确方法是什么?
【问题讨论】:
标签:
java
tomcat
jvm
hybris
【解决方案1】:
请在您的 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
【解决方案2】:
经过一番挖掘,我发现只有当我尝试使用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