SAP Hybris - Tomcat 忽略内存设置

SAP Hybris - Tomcat ignoring memory settings

我是 运行 本地安装的 SAP Hybris 1811。我正在尝试增加它的内存大小,因为我在 SOLR 索引作业期间遇到了 OutOfMemory 异常。

但是,我无法通过我尝试过的任何方法可靠地增加内存。有时经过很多努力(多次构建应用程序,重新启动等)Hybris 能够看到并使用设置的内存(我使用后台检查),但大多数时候它默认为 2 GB 并且内存不足很快。

我尝试过的:

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

请在 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

经过一番挖掘,我发现只有当我尝试使用 debug 参数 运行 Hybris 服务器时才会忽略内存限制。我发现我尝试使用 tomcat.javaoptions 设置的属性不在以调试模式启动服务器时使用的 wrapper-debug.conf 文件中。

长话短说:

tomcat.javaoptions 仅应用于默认 wrapper.conf 文件,在使用 debug.[=18= 等任何参数启动服务器时将被忽略]

要将更改应用于 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