天天看點

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溢漏。

本文轉自 holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/1036215