tomcat 性能優化

tomcat 性能優化html

tomcat默認參數是爲開發環境制定,而非適合生產環境,尤爲是內存和線程的配置,默認都很低,容易成爲性能瓶頸。java

1tomcat內存優化linux

linux修改TOMCAT_HOME/bin/catalina.sh,在前面加入web

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"shell

windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入apache

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024mwindows

最大堆內存是1024m,對於如今的硬件仍是偏低,實施時,仍是按照機器具體硬件配置優化。tomcat

2tomcat 線程優化性能優化

<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"服務器

connectionTimeout="20000" redirectPort="8443" />

maxThreads="600"       ///最大線程數
minSpareThreads="100"///初始化時建立的線程數
maxSpareThreads="500"///一旦建立的線程超過這個值,Tomcat就會關閉再也不須要的socket線程。
acceptCount="700"//指定當全部可使用的處理請求的線程數都被使用時,能夠放處處理隊列中的請求數,超過這個數的請求將不予處理

這裏是http connector的優化,若是使用apache和tomcat作集羣的負載均衡,而且使用ajp協議作apache和tomcat的協議轉發,那麼還須要優化ajp connector。

<Connector port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"

connectionTimeout="20000" redirectPort="8443" />

 

因爲tomcat有多個connector,因此tomcat線程的配置,又支持多個connector共享一個線程池。

首先。打開/conf/server.xml,增長

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

最大線程500(通常服務器足以),最小空閒線程數20,線程最大空閒時間60秒。

 

而後,修改<Connector ...>節點,增長executor屬性,executor設置爲線程池的名字:

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1"  connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1"  redirectPort="443" />

能夠多個connector公用1個線程池,因此ajp connector也一樣能夠設置使用tomcatThreadPool線程池。

 

3、禁用DNS查詢

當web應用程序向要記錄客戶端的信息時,它也會記錄客戶端的IP地址或者經過域名服務器查找機器名 轉換爲IP地址。

DNS查詢須要佔用網絡,而且包括可能從不少很遠的服務器或者不起做用的服務器上去獲取對應的IP的過程,這樣會消耗必定的時間。

修改server.xml文件中的Connector元素,修改屬性enableLookups參數值: enableLookups="false"

若是爲true,則能夠經過調用request.getRemoteHost()進行DNS查詢來獲得遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址

 

 

設置session過時時間

conf\web.xml中經過參數指定:

    <session-config>  

        <session-timeout>180</session-timeout>    

    </session-config>

單位爲分鐘。

 

4Apr插件提升Tomcat性能

  Tomcat可使用APR來提供超強的可伸縮性和性能,更好地集成本地服務器技術.

  APR(Apache Portable Runtime)是一個高可移植庫,它是Apache HTTP Server 2.x的核心。APR有不少用途,包括訪問高級IO功能(例如sendfile,epoll和OpenSSL),OS級別功能(隨機數生成,系統狀態等等),本地進程管理(共享內存,NT管道和UNIX sockets)。這些功能可使Tomcat做爲一個一般的前臺WEB服務器,能更好地和其它本地web技術集成,整體上讓Java更有效率做爲一個高性能web服務器平臺而不是簡單做爲後臺容器。

  在產品環境中,特別是直接使用Tomcat作WEB服務器的時候,應該使用Tomcat Native來提升其性能  

  要測APR給tomcat帶來的好處最好的方法是在慢速網絡上(模擬Internet),將Tomcat線程數開到300以上的水平,而後模擬一大堆併發請求。
  若是不配APR,基本上300個線程狠快就會用滿,之後的請求就只好等待。可是配上APR以後,併發的線程數量明顯降低,從原來的300可能會立刻降低到只有幾十,新的請求會毫無阻塞的進來。
  在局域網環境測,就算是400個併發,也是一瞬間就處理/傳輸完畢,可是在真實的Internet環境下,頁面處理時間只佔0.1%都不到,絕大部分時間都用來頁面傳輸。若是不用APR,一個線程同一時間只能處理一個用戶,勢必會形成阻塞。因此生產環境下用apr是很是必要的。

 

(1)安裝APR tomcat-native

    apr-1.3.8.tar.gz   安裝在/usr/local/apr

    #tar zxvf apr-1.3.8.tar.gz

    #cd apr-1.3.8

    #./configure;make;make install

   

    apr-util-1.3.9.tar.gz  安裝在/usr/local/apr/lib

    #tar zxvf apr-util-1.3.9.tar.gz

    #cd apr-util-1.3.9 

    #./configure --with-apr=/usr/local/apr ----with-java-home=JDK;make;make install

   

    #cd apache-tomcat-6.0.20/bin 

    #tar zxvf tomcat-native.tar.gz 

    #cd tomcat-native/jni/native 

    #./configure --with-apr=/usr/local/apr;make;make install

   

  (2)設置 Tomcat 整合 APR

    修改 tomcat 的啓動 shell (startup.sh),在該文件中加入啓動參數:

      CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib" 。

 

  (3)判斷安裝成功:

    若是看到下面的啓動日誌,表示成功。

      2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init

相關文章
相關標籤/搜索