2011-08-01 273 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%「