Tomcat解決方案
1.提高JVM棧內(nèi)存 JVM heap memory
tomcat有時候會“內(nèi)存溢出”,這種問題出現(xiàn)在實際的生產(chǎn)環(huán)境中,產(chǎn)生這種問題的原因是tomcat使用較少的內(nèi)存給進程。通過配置tomcat的配置文件(window下的tomcat/bin/catalina.bat或Linux下的tomcat/bin/catalina.sh)可以解決此問題。這種解決方法是通過增加JVM的棧內(nèi)存實現(xiàn)的。這個方案可以讓tomcat可以更多關(guān)注處理web請求,并要求盡快完成。
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx1024m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"
2.解決JRE內(nèi)存泄露
性能表現(xiàn)不佳的另一個主要原因是內(nèi)存泄漏??梢允褂米钚碌膖omcat服務器以獲得更好的性能和可伸縮性。新的tomcat包含了一個監(jiān)聽器來處理JRE和PermGen的內(nèi)存泄漏。使用的監(jiān)聽器是
〈Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
3.線程池設(shè)置
線程池指定Web請求負載的數(shù)量,可以通過調(diào)整連接器屬性“maxThreads”完成設(shè)置。maxThreads是由服務器處理的并發(fā)請求的最大數(shù)量。如果maxThreads設(shè)置的值過低,將有沒有足夠的線程來處理所有的請求,請求將進入等待狀態(tài),只有當一個的處理線程釋放后才被處理;如果設(shè)置的太大,Tomcat的啟動將花費更多時間。因此它取決于我們給maxThreads設(shè)置一個正確的值。
〈Connector port="8080" address="localhost"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
4.壓縮
HTTP壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,在客戶端請求服務器對應資源后,從服務器端將資源文件壓縮,再輸出到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。
tomcat5.0以后的版本是支持對輸出內(nèi)容進行壓縮的,使用的是gzip壓縮格式 。
〈Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"
compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/java,text/css,text/plain"
/>
從上面節(jié)點的屬性可以看出,要使用gzip壓縮功能,你需要在Connector節(jié)點中加上如下屬性
compression="on" 打開壓縮功能
compressionMinSize="50" 啟用壓縮的輸出內(nèi)容大小,單位byte默認為2048
noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮
compressableMimeType="text/html,text/xml,text/java,text/css,text/plain" 哪些資源類型需要壓縮
5.數(shù)據(jù)庫性能調(diào)優(yōu)
Tomcat性能在等待數(shù)據(jù)庫查詢被執(zhí)行期間會降。提高性能:
使用可能包含“命名查詢”的關(guān)系型數(shù)據(jù)庫,Tomcat會在啟動時默認加載命名查詢,這個可能會提升性能。
確保所有數(shù)據(jù)庫連接正確地關(guān)閉。正確配置數(shù)據(jù)庫連接池設(shè)置。Resource要素的最大空閑數(shù)(maxIdle),最大連接數(shù)(maxActive),最大建立連接等待時間(maxWait)屬性的值。
6. Tomcat原生庫
Tomcat的原生庫基于Apache可移植運行時(Apache Portable Runtime簡稱APR),給程序員提供了超強的擴展性和性能,在產(chǎn)品運作中幫助融合原生的服務器技術(shù)以展現(xiàn)最佳的性能。
1.提高JVM棧內(nèi)存 JVM heap memory
tomcat有時候會“內(nèi)存溢出”,這種問題出現(xiàn)在實際的生產(chǎn)環(huán)境中,產(chǎn)生這種問題的原因是tomcat使用較少的內(nèi)存給進程。通過配置tomcat的配置文件(window下的tomcat/bin/catalina.bat或Linux下的tomcat/bin/catalina.sh)可以解決此問題。這種解決方法是通過增加JVM的棧內(nèi)存實現(xiàn)的。這個方案可以讓tomcat可以更多關(guān)注處理web請求,并要求盡快完成。
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx1024m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:+DisableExplicitGC"
2.解決JRE內(nèi)存泄露
性能表現(xiàn)不佳的另一個主要原因是內(nèi)存泄漏??梢允褂米钚碌膖omcat服務器以獲得更好的性能和可伸縮性。新的tomcat包含了一個監(jiān)聽器來處理JRE和PermGen的內(nèi)存泄漏。使用的監(jiān)聽器是
〈Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
3.線程池設(shè)置
線程池指定Web請求負載的數(shù)量,可以通過調(diào)整連接器屬性“maxThreads”完成設(shè)置。maxThreads是由服務器處理的并發(fā)請求的最大數(shù)量。如果maxThreads設(shè)置的值過低,將有沒有足夠的線程來處理所有的請求,請求將進入等待狀態(tài),只有當一個的處理線程釋放后才被處理;如果設(shè)置的太大,Tomcat的啟動將花費更多時間。因此它取決于我們給maxThreads設(shè)置一個正確的值。
〈Connector port="8080" address="localhost"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
4.壓縮
HTTP壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,在客戶端請求服務器對應資源后,從服務器端將資源文件壓縮,再輸出到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。
tomcat5.0以后的版本是支持對輸出內(nèi)容進行壓縮的,使用的是gzip壓縮格式 。
〈Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"
compression="on" compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/java,text/css,text/plain"
/>
從上面節(jié)點的屬性可以看出,要使用gzip壓縮功能,你需要在Connector節(jié)點中加上如下屬性
compression="on" 打開壓縮功能
compressionMinSize="50" 啟用壓縮的輸出內(nèi)容大小,單位byte默認為2048
noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮
compressableMimeType="text/html,text/xml,text/java,text/css,text/plain" 哪些資源類型需要壓縮
5.數(shù)據(jù)庫性能調(diào)優(yōu)
Tomcat性能在等待數(shù)據(jù)庫查詢被執(zhí)行期間會降。提高性能:
使用可能包含“命名查詢”的關(guān)系型數(shù)據(jù)庫,Tomcat會在啟動時默認加載命名查詢,這個可能會提升性能。
確保所有數(shù)據(jù)庫連接正確地關(guān)閉。正確配置數(shù)據(jù)庫連接池設(shè)置。Resource要素的最大空閑數(shù)(maxIdle),最大連接數(shù)(maxActive),最大建立連接等待時間(maxWait)屬性的值。
6. Tomcat原生庫
Tomcat的原生庫基于Apache可移植運行時(Apache Portable Runtime簡稱APR),給程序員提供了超強的擴展性和性能,在產(chǎn)品運作中幫助融合原生的服務器技術(shù)以展現(xiàn)最佳的性能。
上一篇:Apache解決方案
下一篇:Websphere解決方案