2011-08-01 274 views
62

我试图调整一个Tomcat 7(CentOS的,Java的版本:1.6.0_25-B06)的初始堆大小通过将下面的线实例的catalina.sh:Tomcat 7:如何正确设置初始堆大小?

export CATALINA_OPTS="-Xms=512M -Xmx=1024M" 

正在启动的Tomcat失败并将以下消息记录到catalina.out中:

Invalid initial heap size: -Xms=512m 
Could not create the Java virtual machine. 

这些选项有什么问题?

+15

不要编辑卡特琳娜.sh。请参阅本文中描述的正确方法:[http://stackoverflow.com/a/10950387/926057](http://stackoverflow.com/a/10950387/926057) –

回答

103

您不能使用=。只需使用这样的:

export CATALINA_OPTS="-Xms512M -Xmx1024M" 
+1

噢,谢谢,now now works! – GLA

+2

我在tomcat bin文件夹中创建了一个setenv.sh文件,并添加了这一行,并且它能够工作! –

+0

Xmx中可以设置的最大尺寸是多少?我有65 GB Ram – vinodh

10

你可能不需要有出口,只要加入这行catalina.sh

CATALINA_OPTS="-Xms512M -Xmx1024M" 
+20

**不要** catalina.sh!把它放在'/ usr/share/tomcat7/bin/setenv.sh'里面,这是它的正确位置。 – kazy

+3

setenv.sh是正确的地方。 –

+0

是的,它应该在setenv.sh内 – unknownbits

24

使用下面的命令来增加Java堆大小tomcat7( Linux发行版)正确:

echo 'export CATALINA_OPTS="-Xms512M -Xmx1024M"' > /usr/share/tomcat7/bin/setenv.sh 
+0

如果在Debian中,我建议我建议更改'/ etc/default/tomcat7',而不是在等效位置创建setenv.sh文件。是一个不太模糊的位置。 –

3

setenv.sh比较好,因为您可以轻松地将这样的端口从一台机器到另一台机器的配置,或者从一个Tomcat版本到另一台机器。 catalina.sh从一个Tomcat版本更改为另一个版本。但是你可以使用任何版本的Tomcat保持你的setenv.sh不变。

另一个优势是,如果您将更改添加到备份或版本控制系统中,则更容易跟踪更改的历史记录。如果你看看setenv.sh沿着历史的变化,你将只能看到你自己的变化。而如果您使用catalina.sh,则不仅会看到您的更改,还会看到每个较新版本Tomcat随附的更改。

1

请注意Debian发行版的变化!我试图在我的Debian 7中更改CATALINA_OPTS,以及那个tomcat没有启动的结果。因此,我解决了这个问题,通过更改属性JAVA_OPTS代替CATALINA_OPTS,这样

export JAVA_OPTS="-Xms512M -Xmx1024M" 
1

对面这来了,我实现了内森的解决方案:

添加行(改变值按要求) :

export JAVA_OPTS="-Xms512M -Xmx1024M" 

到/usr/share/tomcat7/bin/setenv.sh

如果该文件不存在,那么创建它,并

chown root:root it 
chmod 755 it 

然后重新启动Tomcat和 与

ps aux | grep logging 

检查哪些应该只是拿起实例,并展示了Java参数parms

-1

转到“Tomcat目录”/ bin目录

如果Linux然后创建setenv.sh否则如果Windows然后创建setenv。蝙蝠

内容SETENV的*文件:

export CATALINA_OPTS="$CATALINA_OPTS -Xms512m" 
export CATALINA_OPTS="$CATALINA_OPTS -Xmx8192m" 
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m" 

新PARAMS此重新启动Tomcat后。

解释和完整的信息在这里

http://crunchify.com/how-to-change-jvm-heap-setting-xms-xmx-of-tomcat/

1

它的工作原理,即使没有使用 '出口' 的关键字。这就是我在我的setenv.sh(/usr/share/tomcat7/bin/setenv.sh)中的工作。

OS:14.04.1 Ubuntu的 Server版本:的Apache Tomcat/7.0.52(Ubuntu的) Server内置:二○一六年六月三十〇日1时59分37秒 服务器数量:7.0.52.0

JAVA_OPTS="-Dorg.apache.catalina.security.SecurityListener.UMASK=`umask` -server -Xms6G -Xmx6G -Xmn1400m -XX:HeapDumpPath=/Some/logs/ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:+UseCompressedOops -Dcom.sun.management.jmxremote.port=8181 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 
JAVA_OPTS="$JAVA_OPTS -Dserver.name=$HOSTNAME" 
0

花了很多时间在这之后。我发现这是setenv.bat必须的样子。否“字符接受批处理文件

集CATALINA_OPTS = -Xms512m -Xmx1024m -XX:PermSize =128米-XX:MaxPermSize参数=768米

回声你好 ”%CATALINA_OPTS%“