本文是就Tomcat 4為基礎向大家介紹WEB容器調優的,因為許多朋友安裝好之后就開始正式上線,很少有人以用戶現場為基礎對服務器進行調優。如果并發量小,系統可能不會出問題,但是并發量大時,系統反應速度迅速下降,由于不了解原因,因此大家還拼命在自己的應用中尋找問題,從而浪費了寶貴的現場時間。但是Tomcat如何調優呢?
??? 其實真正的WEB容器調優是需要許多方面的知識的,你必須了解網絡+硬件+OS+JVM+WEB容器,但是這篇文章無法講解那么多,而應用服務器本身也有些調優的基本原則,下文就會給予介紹。
??? 先在Tomcat安裝目錄中找到conf子目錄,然后再打開web.xml文件,搜索附件A中的內容,可能會有些不同。不同的地方就是需要修改的部分。
??? 1. 屏蔽DNS查詢。
??? Web應用程序可以通過Web容器提供的getRemoteHost()方法獲得訪問Web應用客戶的IP地址和名稱,但是這樣會消耗Web容器的資源,并且還需要通過IP地址和DNS服務器反查用戶的名字,因此當系統上線時,可以將這個屬性關閉,從而減少資源消耗,那么Web應用也就只能記錄下IP地址了。修改的屬性是enableLoopups="false"
??? 2. 調整線程數。
??? Tomcat通過線程池來為用戶訪問提供響應,對于上線的系統初步估計用戶并發數量后,然后調整線程池容量。例如:用戶并發數量大約在100左右。那么可以設置minProcessors="100" maxProcessors="100",將最大和最小設置為一樣后,線程池不會再釋放空閑的線程,使用戶訪問突然增加的時候,不需要再消耗系統資源去創建新的線程。
??? 3. 調整最大連接數
??? 這個其實最復雜,即使用戶并發量大,但是系統反應速度快的話,可以把這個值不用設置太高,高了系統需要消耗大量的資源去切換線程,但是如果設置太低也會造成應用無法滿足用戶并發需要。因此設置這個最好能夠結合整個系統的跟蹤與調優,使系統達到最好的平穩狀態。一般設置為maxProcessors的1.5倍就可以了。
??? 4. 調整網絡超時。
??? 主要是HTTP協議也有個連接過程,客戶端連接到服務器上后,多長時間沒有得到處理就會被釋放。如果服務器處理速度較慢,但是希望每個用戶都能得到有效處理,或者網絡環境不好,需要保證用戶不會因為超時會斷,也可以把時間加長。但是一般設置成connectionTimeout="30000"就可以了。太長對系統來說價值不大,反而會浪費系統資源在無謂的長連接上。
??? 附件A。
??? 在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:
??? minProcessors:最小空閑連接線程數,用于提高系統處理性能,默認值為10
??? maxProcessors:最大連接線程數,即:并發處理的最大請求數,默認值為75
??? acceptCount:允許的最大連接數,應大于等于maxProcessors,默認值為100
??? enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設置為false
??? connectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為20000毫秒。??? <Connector
??? className="org.apache.coyote.tomcat4.CoyoteConnector"
??? port="8080" minProcessors="5" maxProcessors="75"
??? enableLookups="true" redirectPort="8443"
??? acceptCount="10" debug="0" connectionTimeout="20000"
??? useURIValidationHack="false"
/> Tomcat常用調優技巧.txt
??? 其實真正的WEB容器調優是需要許多方面的知識的,你必須了解網絡+硬件+OS+JVM+WEB容器,但是這篇文章無法講解那么多,而應用服務器本身也有些調優的基本原則,下文就會給予介紹。
??? 先在Tomcat安裝目錄中找到conf子目錄,然后再打開web.xml文件,搜索附件A中的內容,可能會有些不同。不同的地方就是需要修改的部分。
??? 1. 屏蔽DNS查詢。
??? Web應用程序可以通過Web容器提供的getRemoteHost()方法獲得訪問Web應用客戶的IP地址和名稱,但是這樣會消耗Web容器的資源,并且還需要通過IP地址和DNS服務器反查用戶的名字,因此當系統上線時,可以將這個屬性關閉,從而減少資源消耗,那么Web應用也就只能記錄下IP地址了。修改的屬性是enableLoopups="false"
??? 2. 調整線程數。
??? Tomcat通過線程池來為用戶訪問提供響應,對于上線的系統初步估計用戶并發數量后,然后調整線程池容量。例如:用戶并發數量大約在100左右。那么可以設置minProcessors="100" maxProcessors="100",將最大和最小設置為一樣后,線程池不會再釋放空閑的線程,使用戶訪問突然增加的時候,不需要再消耗系統資源去創建新的線程。
??? 3. 調整最大連接數
??? 這個其實最復雜,即使用戶并發量大,但是系統反應速度快的話,可以把這個值不用設置太高,高了系統需要消耗大量的資源去切換線程,但是如果設置太低也會造成應用無法滿足用戶并發需要。因此設置這個最好能夠結合整個系統的跟蹤與調優,使系統達到最好的平穩狀態。一般設置為maxProcessors的1.5倍就可以了。
??? 4. 調整網絡超時。
??? 主要是HTTP協議也有個連接過程,客戶端連接到服務器上后,多長時間沒有得到處理就會被釋放。如果服務器處理速度較慢,但是希望每個用戶都能得到有效處理,或者網絡環境不好,需要保證用戶不會因為超時會斷,也可以把時間加長。但是一般設置成connectionTimeout="30000"就可以了。太長對系統來說價值不大,反而會浪費系統資源在無謂的長連接上。
??? 附件A。
??? 在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:
??? minProcessors:最小空閑連接線程數,用于提高系統處理性能,默認值為10
??? maxProcessors:最大連接線程數,即:并發處理的最大請求數,默認值為75
??? acceptCount:允許的最大連接數,應大于等于maxProcessors,默認值為100
??? enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設置為false
??? connectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為20000毫秒。??? <Connector
??? className="org.apache.coyote.tomcat4.CoyoteConnector"
??? port="8080" minProcessors="5" maxProcessors="75"
??? enableLookups="true" redirectPort="8443"
??? acceptCount="10" debug="0" connectionTimeout="20000"
??? useURIValidationHack="false"
/> Tomcat常用調優技巧.txt
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
