什么是运行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(不推荐),请慢慢减少两个数字(mx
和ms
的相同值),直到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 机器上崩溃