tomcat優化

 1. 如何加大tomcat連接數

在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:

maxThreads : tomcat起動的最大線程數,即同時處理的任務個數,默認值爲200。

minProcessors:最小空閒連接線程數,用於提高系統處理性能,默認值爲10 。

maxProcessors:最大連接線程數,即:併發處理的最大請求數,默認值爲75 。

acceptCount: 當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值爲100。

minSpareThreads :Tomcat初始化時創建的線程數。

maxSpareThreads :一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。

enableLookups:是否反查域名,取值爲:true或false。 缺省值爲false,表示使用客戶端主機名的DNS解析功能,被ServletRequest.getRemoteHost方法調用。

connectionTimeout:網絡連接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。通常可設置爲30000毫秒。


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

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

Unix中如何設置這些參數,請參閱Unix常用監控和管理命令

tomcat5中的配置示例:

<Connector port="8090" maxHttpHeaderSize="8169"  maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"               enableLookups="false" redirectPort="8649" acceptCount="100" connectionTimeout="50000" disableUploadTimeout="true" URIEncoding="GBK"/>

<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_home}/conf/web.xml中,把listings參數設置成false即可,如下:

<servlet> ... <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> ... </servlet>


3. 如何加大tomcat可以使用的內存

tomcat默認可以使用的內存爲128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。
Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:

JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】' 需要把這個兩個參數值調大。

例如: JAVA_OPTS='-Xms256m -Xmx512m' 表示初始化內存爲256MB,可以使用的最大內存爲512MB 。

 

export JAVA_HOME='/home/ftpuser/xjSheetHome/java/jdk1.5.0_22/'

JAVA_OPTS="-Xms1500m -Xmx1500m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -Dfile.encoding=GBK"

參數說明:

-Xms 是指設定程序啓動時佔用內存大小。一般來講,大點,程序會啓動的 快一點,但是也可能會導致機器暫時間變慢。

-Xmx 是指設定程序運行期間最大可佔用的內存大小。如果程序運行需要佔 用更多的內存,超出了這個設置值,就會拋出OutOfMemory 異常。

-Xss 是指設定每個線程的堆棧大小。這個就要依據你的程序,看一個線程 大約需要佔用多少內存,可能會有多少線程同時運行等。

-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64 。

-XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。

 

 

 

<Context path="/Sheet" defaultSessionTimeOut="3600" docBase="/home/user/Sheet"  >
  <Resource name="jdbc/app" auth="Container"
                        type="javax.sql.DataSource"
                        username="SHEET" password="SHEET"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            url="jdbc:oracle:thin:@136.24.248.106:1521:kf"
            maxActive="1000" maxIdle="75"/>
  <ResourceLink name="UserTransaction"
            global="UserTransaction"
            type="javax.transaction.UserTransaction"/>
</Context>
參數說明:
defaultSessionTimeOut:設置會話時間 單位爲秒
maxActive : 連接池的最大數據庫連接數。設爲0表示無限制。
maxIdle :可以同時閒置在連接池中的連接的最大數  
maxWait : 最大超時時間,以毫秒計

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