什么是运行tomcat的redhat机器上有效的Xmx值

问题描述 投票:0回答:2

我在RHEL 7机器上运行tomcat,内存为1GB。我已经设置了tomcat和java都有Xmx = 1G以及以下语句支持,

[root @ ip-172-31-28-199 bin] #java -XX:+ PrintFlagsFinal -version | grep HeapSize拾起_JAVA_OPTIONS:-Xmx1g uintx ErgoHeapSizeLimit = 0 {product} uintx HeapSizePerGCThread = 87241520 {product} uintx InitialHeapSize:= 16777216 {product} uintx LargePageHeapSizeThreshold = 134217728 {product} uintx MaxHeapSize:= 1073741824 {product} openjdk version“1.8。 0_161"

tomcat 2799 1 1 02:21? 00:00:07 / usr / bin / java -Djava.util.logging.config.file = / opt / tomcat / conf / logging.properties -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager -Djava .awt.headless = true -Djdk.tls.ephemeralDHKeySize = 2048 -Djava.protocol.handler.pkgs = org.apache.catalina.webresources -Xmx1024M -Dignore.endorsed.dirs = -classpath / opt / tomcat / bin / bootstrap。 jar:/opt/tomcat/bin/tomcat-juli.jar -Dcatalina.base = / opt / tomcat -Dcatalina.home = / opt / tomcat -Djava.io.tmpdir = / opt / tomcat / temp org.apache.catalina .startup.Bootstrap开始

但是当我得到例外时,我得到以下信息,

There is insufficient memory for the Java Runtime Environment to continue.

Native memory allocation (mmap) failed to map 244043776 bytes for committing reserved memory.

我知道java永远不会声称1GB内存,因为这是机器的总内存。但为什么我提到这个尺码的错误?

java tomcat memory heap redhat
2个回答
1
投票

尝试添加-Xms1g,所以它最初分配所有内存,你会发现它甚至无法启动Tomcat。

如果你想尽可能多地将内存压入Tomcat(不推荐),请慢慢减少两个数字(mxms的相同值),直到Tomcat启动。

这是你可以给Tomcat的绝对最大值,但你不应该这样做。 Java在运行时可能仍然需要更多,并且操作系统偶尔会需要更多,所以你应该给Tomcat少于绝对最大值。

现在您已找到该号码,如果您愿意,可以再次将-Xms保留为undefined。


0
投票

有一个有趣的帖子here建议禁用OOPS。您是在运行物理服务器还是VM?

我同意1G服务器的大小不足,你应该运行Xmx = 512M并允许一些swappiness(vm.swappiness = 60是默认值,对于小型Tomcat来说应该没问题)

© www.soinside.com 2019 - 2024. All rights reserved.