Configuring Tomcat 學(xué)習(xí)體會(02)
3. Java虛擬機(jī)配置如果使用Tomcat默認(rèn)配置來建設(shè)Web網(wǎng)站,可能會沒有足夠內(nèi)存來響應(yīng)所有的請求,并且可能會在所有客戶端報(bào)錯(cuò);或者有足夠內(nèi)存了,但是沒有足夠的線程,那么有些并發(fā)的訪問會無法被Tomcat處理或被舍棄,造成部分客戶端無法訪問。下表是JVM參數(shù)說明(非Sun公司的JDK/JRE無效):
用處 JVM選項(xiàng) 說明
------------------------------------------------------------------------------------
內(nèi)存設(shè)置 | -Xms384M | 設(shè)置JVM啟動時(shí)的堆(heap)內(nèi)存大小
內(nèi)存設(shè)置 | -Xmx384M | 設(shè)置JVM可以擴(kuò)展的最大堆(heap)內(nèi)存大小
調(diào)試安全 | -Djava.security.debug=all | 打開所有有關(guān)安全的調(diào)試輸出
調(diào)試 | -enableassertions | 允許聲明檢查(給開發(fā)人員調(diào)試代碼用的)
調(diào)試 | -verbose:class | 允許類加載的詳細(xì)調(diào)試輸出
調(diào)試 | -verbose:gc | 允許垃圾回收器的調(diào)試輸出
圖像 | -Djava.awt.headless=true | 允許JVM運(yùn)行在在沒有安裝圖像顯示軟件的情況下
本地化 | -Duser.language=en | 設(shè)置Tomcat用戶的語言包
本地化 | -Dfile.encoding=UTF-8 | 設(shè)置Tomcat用戶的默認(rèn)文件編碼
網(wǎng)絡(luò) | -Djava.net.preferIPv4Stack=true | 讓JVM用IPv4代替IPv6,Tomcat在FreeBSD系統(tǒng)下需要設(shè)置該參數(shù)
從上表可以看出,堆(heap)內(nèi)存設(shè)置是最重要的。如果Tomcat的堆內(nèi)存設(shè)置太小,可能會造成運(yùn)行速度慢或者報(bào)出OutOfMemoryError的錯(cuò)誤并造成不可知反應(yīng)。如果設(shè)置太大了,又會浪費(fèi)系統(tǒng)內(nèi)存,甚至可能影響其他程序的正常運(yùn)行。------------------------------------------------------------------------------------
內(nèi)存設(shè)置 | -Xms384M | 設(shè)置JVM啟動時(shí)的堆(heap)內(nèi)存大小
內(nèi)存設(shè)置 | -Xmx384M | 設(shè)置JVM可以擴(kuò)展的最大堆(heap)內(nèi)存大小
調(diào)試安全 | -Djava.security.debug=all | 打開所有有關(guān)安全的調(diào)試輸出
調(diào)試 | -enableassertions | 允許聲明檢查(給開發(fā)人員調(diào)試代碼用的)
調(diào)試 | -verbose:class | 允許類加載的詳細(xì)調(diào)試輸出
調(diào)試 | -verbose:gc | 允許垃圾回收器的調(diào)試輸出
圖像 | -Djava.awt.headless=true | 允許JVM運(yùn)行在在沒有安裝圖像顯示軟件的情況下
本地化 | -Duser.language=en | 設(shè)置Tomcat用戶的語言包
本地化 | -Dfile.encoding=UTF-8 | 設(shè)置Tomcat用戶的默認(rèn)文件編碼
網(wǎng)絡(luò) | -Djava.net.preferIPv4Stack=true | 讓JVM用IPv4代替IPv6,Tomcat在FreeBSD系統(tǒng)下需要設(shè)置該參數(shù)
如果Tomcat JVM的啟動堆內(nèi)存小而擴(kuò)展內(nèi)存大,那么在JVM在擴(kuò)展內(nèi)存時(shí)會影響Tomcat的反應(yīng),造成速度變慢,所以最好是把Xms和Xmx設(shè)置一樣大小,至于具體內(nèi)存大小可以根據(jù)情況進(jìn)行測試和調(diào)整,后面將進(jìn)一步討論。
使用JAVA_OPTS參數(shù)來加載各種JVM啟動參數(shù),例如你想讓Tomcat JVM運(yùn)行在調(diào)試模式,并且遠(yuǎn)程用8000端口進(jìn)行監(jiān)控,可以使用:
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
這會允許你連接一個(gè)JPDA遠(yuǎn)程調(diào)試器(例如各種Java IDE)。如果你想通過JMX遠(yuǎn)程終端來做本地Tomcat監(jiān)控的話可以:
JAVA_OPTS="-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
這樣你可以用JMX控制臺(例如JDK中帶的jconsole)來連接本地Tomcat,如果需要連接遠(yuǎn)程的,則:-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8008 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.password.file=/path/to/pw/file"
如果你要設(shè)置Tomcat本地化語言,則:-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.password.file=/path/to/pw/file"
$ LANG=en_US
$ catalina.sh start
或者用$ catalina.sh start
-Duser.language=en
posted on 2009-03-15 02:51 Terry Lee 閱讀(576) 評論(0) 編輯 收藏 所屬分類: Java 、Tomcat