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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是运行tomcat的redhat机器上有效的Xmx值相关的知识,希望对你有一定的参考价值。

我在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内存,因为这是机器的总内存。但为什么我提到这个尺码的错误?

答案

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

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

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

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

另一答案

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

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

以上是关于什么是运行tomcat的redhat机器上有效的Xmx值的主要内容,如果未能解决你的问题,请参考以下文章

如何运行使用 xCode 构建的 OS X 应用程序以查看依赖项是不是有效

Redhat+Weblogic 远程Jconsole监控java程序运行

Firefox 无头在无头 redhat linux 机器上崩溃

Tomcat 10 问题上的 Spring Boot 2.x

Tomcat 6 堆大小 - 这是正确的吗?

Redhat 7.2 上运行expect需要安装哪些包,谢谢各位