Java, Only Java!

          統(tǒng)計

          留言簿(20)

          積分與排名

          好友空間

          文檔技巧

          閱讀排行榜

          評論排行榜

          Tomcat常用調(diào)優(yōu)技巧

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

          posted on 2007-12-15 18:00 zYx.Tom 閱讀(2707) 評論(4)  編輯  收藏

          評論

          # re: Tomcat常用調(diào)優(yōu)技巧[未登錄] 2007-12-16 12:37 paul

          不錯  回復  更多評論   

          # re: Tomcat常用調(diào)優(yōu)技巧 2007-12-17 16:51 CoderDream

          非常不錯,感謝分享,收藏!  回復  更多評論   

          # re: Tomcat常用調(diào)優(yōu)技巧 2008-03-08 18:00 鐘玉兵

          寫得不錯  回復  更多評論   

          # re: Tomcat常用調(diào)優(yōu)技巧[未登錄] 2008-04-11 18:49 求知者

          寫的簡單易懂,挺好的。  回復  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 铜山县| 迁西县| 萨迦县| 五华县| 安国市| 阳信县| 达州市| 田东县| 石屏县| 铜鼓县| 平湖市| 海伦市| 扶风县| 宁陵县| 武强县| 资阳市| 隆尧县| 德阳市| 措勤县| 喀喇| 寿宁县| 屏山县| 运城市| 汉川市| 博乐市| 南宫市| 准格尔旗| 界首市| 德昌县| 南川市| 兴仁县| 梁河县| 呈贡县| 富顺县| 理塘县| 英山县| 锡林郭勒盟| 永修县| 内丘县| 怀化市| 崇明县|