Tomcat優化 (一)

  最近用httpclient做performance testing時,發現當線程加到150時服務端就會拋出socket資源用盡的錯誤,根本沒法再往上加,響應的速度也是相當的慢,後來經過研究,發現在 server.xml中修改以一部分,增加節點數目,可以很好的提高性能:
  <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150"
   minSpareThreads="30" maxSpareThreads="75" enableLookups="false"
   redirectPort="8443" acceptCount="100" connectionTimeout="20000"
   disableUploadTimeout="true" />
  以上爲默認配置,適當修改紅色字體部分的值,幾個參數意義分別爲:
maxThreads:Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。
acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
connnectionTimeout:網絡連接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。通常可設置爲30000毫秒。
minSpareThreads:Tomcat初始化時創建的線程數。
maxSpareThreads:一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程
  對於Connector 8443也有相應的設置,如果同時會用到http與https,應合理分配這兩個數據.如果只用到其中的一個,可以將另外一個儘量設置小一點.

  此外,還可以給Java虛擬機設置使用的內存來提高性能,Tomcat默認可以使用的內存爲128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。
  Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:
  JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】'
  需要把這個兩個參數值調大。例如:
  JAVA_OPTS='-Xms256m -Xmx512m'
 
  測試發現,當tomcat線程數增大,但沒有超過最大線程數時,平均響應時間會增大,但這不意味着tomcat在線程增多時響應速度變慢.在測試數據中,我們發現,由於線程數增多,在請求時需要排隊,導致一部分請求會一直排隊,隨着線程數的增多,排隊等待的最大時間也會越來越大,而這些大數據纔是導致平均響應時間變大的罪魁禍首.響應時間大於3s的請求佔總請求的比例一直維持在3%-5%.
 
 
補充:在代碼方便,代碼中的System.out語句會嚴重影響代碼執行的效率,就將這些爲必要的語句在調試完成之後全部刪除以提高效率.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章