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