提高TOMCAT併發處理性能


1. 加大tomcat連接數

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

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

web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。

tomcat4中的配置示例:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="10" maxProcessors="1024"
enableLookups="false" redirectPort="8443"
acceptCount="1024" debug="0" connectionTimeout="30000" />
對於其他端口的偵聽配置,以此類推。

2. 加大tomcat可以使用的內存

tomcat默認可以使用的內存爲128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。

Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:
JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】'
需要把這個兩個參數值調大。

例如:JAVA_OPTS='-Xms256m -Xmx512m'

Windows下,在文件{tomcat_home}/bin/catalina.bat的前面,增加如下設置:
set JAVA_OPTS=-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】
需要把這個兩個參數值調大。

例如:set JAVA_OPTS=-Xms256m -Xmx512m


表示初始化內存爲256MB,可以使用的最大內存爲512MB

 

 

linix系統平臺大併發量下tomcat5.5優化策略(2009-03-11 12:45:24)

在部署系統後,爲了增加系統併發量,系統響應速度,做了一些工作;遂整理如下。

1、修改server.xml文件

<Connector port="80" protocol="HTTP/1.1"
               maxHttpHeaderSize="8192"
               maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"
               enableLookups="false" redirectPort="8443" acceptCount="200"
               connectionTimeout="50000" disableUploadTimeout="true"/>
主要修改了maxThreads、acceptCount。

引用
Google資料說“如果要加大併發連接數,應同時加大這兩個參數。web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。”

2、增加tomcat啓動初始內存設置;catalina.sh – 增加了參數內存設置

內存爲2G情況:

JAVA_OPTS="-server -Xms1500M -Xmx1500M -Xss256K -Djava.awt.headless=true -XX:PermSize=64M -XX:MaxPermSize=128m"

(補充:-Dfile.encoding=utf8 加入這個,是設置文件寫入的編碼方式)

引用

Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置爲相同
堆內存分配
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、-Xmx相等以避免在每次GC 後調整堆的大小。
非堆內存分配
JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。
JVM內存限制(最大值)
首先JVM內存限制於實際的最大物理內存,假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關係。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,這個限制一般是2GB-3GB(一般來說Windows系統下爲1.5G-2G,Linux系統下爲2G-3G),而64bit以上的處理器就不會有限制了。

-Djava.awt.headless=true

Java在圖形處理時調用了本地的圖形處理庫。在利用Java作圖形處理(比如:圖片縮放,圖片簽名,生成報表)時,如果運行在windows上不會出問題。如果將程序移植到Linux/Unix上的時候有可能出現圖形不能顯示的錯誤。提示信息:"Can't connect to X11 window server"這是由於Linux的圖形處理需要一個X Server服務器。解決辦法就是設置參數。

Xss:每個線程的Stack大小。Stack的大小限制着線程的數量。如果Stack過大就好導致內存溢漏。-Xss參數決定Stack大小,例如-Xss1024K。如果Stack太小,也會導致Stack溢漏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章