Tomcat並發數優化,修改service.xml性能調優 增加最大並發連接數


可以在控制台的啟動信息里看見,默認狀態下沒有被打開nio配置,啟動時的信息,如下: 
2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init 
信息: Initializing Coyote HTTP/1.1 on http-8080 
2010-2-1 12:59:40 org.apache.catalina.startup.Catalina load 

修改成支持NIO的類型,配置如下: 

Java代碼   收藏代碼
  1. <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"  
  2.                connectionTimeout="20000"  
  3.                redirectPort="8443" />  



進行測試,被打開nio配置,啟動時的信息,如下: 
2010-2-1 13:01:01 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
信息: Using a shared selector for servlet write/read 
2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init 
信息: Initializing Coyote HTTP/1.1 on http-8080 
這樣才能讓你真正體驗到Tomcat6下NIO給你的系統帶來的快感。 

2,修改Tomcat 6默認的maxThread 

引用
打開server.xml可以看到如下配置: 
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" /> 
官方文檔默認說支持200但似乎超過40就不行了 


修改方法 : 

Java代碼   收藏代碼
  1. <Connector port="8080" protocol="HTTP/1.1"   
  2.                connectionTimeout="20000"   
  3.                redirectPort="8443" maxThreads="150"/>  

 

引用

在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有: 
minProcessors:最小空閑連接線程數,用於提高系統處理性能,默認值為10 
maxProcessors:最大連接線程數,即:並發處理的最大請求數,默認值為75 
acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值為100 
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設置為false 
connectionTimeout:網絡連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。 

其中和最大連接數相關的參數為maxProcessors和acceptCount。如果要加大並發連接數,應同時加大這兩個參數。 



3,大量的並發也意味着大量的服務器資源,所以修改一下tomcat的JVM參數也是必要的 

錯誤提示:java.lang.OutOfMemoryError: Java heap space 

引用
Windows環境下修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件開頭增加如下設置:set JAVA_OPTS=-Xms256m -Xmx512m 

Linux環境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件開頭增加如下設置:JAVA_OPTS=’-Xms256m -Xmx512m’



引用

JVM設置 
堆的尺寸 
-Xmssize in bytes 
    設定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。這個值必須是1024個字節(1KB)的倍數,且比它大。(-server選項把缺省尺寸增加到32M。) 
-Xmnsize in bytes 
    為Eden對象設定初始Java堆的大小,缺省值為640K。(-server選項把缺省尺寸增加到2M。) 
-Xmxsize in bytes 
    設定Java堆的最大尺寸,缺省值為64M,(-server選項把缺省尺寸增加到128M。) 最大的堆尺寸達到將近2GB(2048MB)。 

請注意:很多垃圾收集器的選項依賴於堆大小的設定。請在微調垃圾收集器使用內存空間的方式之前,確認是否已經正確設定了堆的尺寸。 

垃圾收集:內存的使用 
-XX:MinHeapFreeRatio=percentage as a whole number 
    修改垃圾回收之后堆中可用內存的最小百分比,缺省值是40。如果垃圾回收后至少還有40%的堆內存沒有被釋放,則系統將增加堆的尺寸。 
-XX:MaxHeapFreeRatio=percentage as a whole number 
    改變垃圾回收之后和堆內存縮小之前可用堆內存的最大百分比,缺省值為70。這意味着如果在垃圾回收之后還有大於70%的堆內存,則系統就會減少堆的尺寸。 
-XX:NewSize=size in bytes 
    為已分配內存的對象中的Eden代設置缺省的內存尺寸。它的缺省值是640K。(-server選項把缺省尺寸增加到2M。) 
-XX:MaxNewSize=size in bytes 
    允許您改變初期對象空間的上限,新建對象所需的內存就是從這個空間中分配來的,這個選項的缺省值是640K。(-server選項把缺省尺寸增加到2M。) 
-XX:NewRatio=value 
    改變新舊空間的尺寸比例,這個比例的缺省值是8,意思是新空間的尺寸是舊空間的1/8。 
-XX:SurvivorRatio=number 
    改變Eden對象空間和殘存空間的尺寸比例,這個比例的缺省值是10,意思是Eden對象空間的尺寸比殘存空間大survivorRatio+2倍。 
-XX:TargetSurvivorRatio=percentage 
    設定您所期望的空間提取后被使用的殘存空間的百分比,缺省值是50。 
-XX:MaxPermSize=size in MB 
    長久代(permanent generation)的尺寸,缺省值為32(32MB)。 


有關JVM的參數設置可參考這個地址:http://daichangfu.iteye.com/blog/893844 


web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。Unix中如何設置這些參數,請參閱Unix常用監控和管理命令 

 

 

tomcat的幾種connector方式簡介

Tomcat的四種基於HTTP協議的Connector性能比較
<Connector port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"                          

connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000"
               redirectPort="8443"/>
<Connector executor="tomcatThreadPool"
               port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector executor="tomcatThreadPool"
               port="8081" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />
我們姑且把上面四種Connector按照順序命名為 NIO, HTTP, POOL, NIOP
為了不讓其他因素影響測試結果,我們只對一個很簡單的jsp頁面進行測試,這個頁面僅僅是輸出一個Hello World。假設地址是 http://tomcat1/test.jsp
我們依次對四種Connector進行測試,測試的客戶端在另外一台機器上用ab命令來完成,測試命令為: ab -c 900 -n 2000 http://tomcat1/test.jsp ,最終的測試結果如下表所示(單位:平均每秒處理的請求數):

NIO HTTP POOL NIOP
281 65 208 365
666 66 110 398
692 65 66 263
256 63 94 459
440 67 145 363

由這五組數據不難看出,HTTP的性能是很穩定,但是也是最差的,而這種方式就是Tomcat的默認配置。NIO方式波動很大,但沒有低於280 的,NIOP是在NIO的基礎上加入線程池,可能是程序處理更復雜了,因此性能不見得比NIO強;而POOL方式則波動很大,測試期間和HTTP方式一樣,不時有停滯。
由於linux的內核默認限制了最大打開文件數目是1024,因此此次並發數控制在900。
盡管這一個結果在實際的網站中因為各方面因素導致,可能差別沒這么大,例如受限於數據庫的性能等等的問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM