Tomcat 性能優化-1

<Connector 
port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

maxHttpHeaderSize:HTTP請求和響應頭的最大量,以字節為單位,默認值為4096字節

maxThreads="150" :允許最多的線程數

minSpareThreads:設當連接器第一次啟協創建線程的數目,確保至少有這么多的空閑線程可用。默認值為4

maxSpareThreads:允許存在空閑線程的最大數目,默認值為50

enableLookups:調用request、getRemoteHost()執行DNS查詢,以返回遠程主機的主機名,如果設置為false,則直接返回IP地址。

redirectPort:如連接器不支持SSL請求,如收到SSL請求,Catalina容器將會自動重定向指定的端口號,讓其進行處理。

acceptCount:當所有的可能處理的線程都正在使用時,在隊列中排隊請求的最大數目。當隊列已滿,任何接收到的請求都會被拒絕,默認值為10

isableUploadTimeOut:允許Servlet容器,正在執行使用一個較長的連接超時值,以使Servlet有較長的時間來完成它的執行,默認值為false

URIEncoding,用于解碼URI查詢參數,默認為false

<Engine>元素:
<Engine name=”Cataline” defaultHost=”localhst”>

為特定的Service處理所有的請示。每個Service只能包含一個Engine元素,它負責接收和處理此Service所有的連接器收到的請求,向連接發回響應,

并最終顯示在客戶端。<Engine>至少有一個<Host>元素,必須至少有一個<Host>屬性的名字與defaultHost指定的名字相匹配。

name:指定Engine的邏輯名字(必須)

defaultHost:默認主機名,值必須與<Service>的name值相匹配

className:實現org.apache.catalina.Engine接口,默認實現類為org.apache.catalina.core.StandardEngine類

jvmRoute:在負載勻衡中使用的標識符,必須唯一

<Host>元素:
<Host name=”localhst” appBase=”webapps” unpackWARs=”true” autoDeploy=”true” xmlValidation=”false”
 xmlNamespaceAware=”false”>

appBase:設定應用程序的基目錄,絕對路徑或相對于%CATALINA_HOME%的路徑名

autoDeploy:指示Tomcat運行時,如有新的WEB程序加開appBase指定的目錄下,是否為自動布署,默認值為true

name:虛擬主機的網絡名(必須)

unPackWARs:虛擬主機指定臨時讀寫使用的目錄的路徑名,不設,Tomcat會在%CATALINA_HOME%/work目錄下提供一個合適的目錄。

<context>元素:
<Content path=”/ouser-web” docBase="ouser-web" reloadable=”true” />

path:指定上下文路徑。一個虛擬主機中,上下文路徑必須唯一

docBase:絕對路徑或相對于Host的appBase 屬性的相對路徑

reloadable:為true,Tomcat運行時,如果WEB-INF/classes和WEB-INF/lib目錄中有改變,Tomcat會自動重新加載該WEB應用程序。

雖方便,但開銷也大,默認值為false,我們在調用可以打開,發布后再關閉。

Tomcat 性能優化方案

一. 提高JVM棧內存Increase JVM heap memory

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8  
    -server -Xms1024m -Xmx1024m  
    -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m  
    -XX:MaxPermSize=512m -XX:+DisableExplicitGC"  
    
-Xms – 指定初始化時化的棧內存
-Xmx – 指定最大棧內存
在重啟你的Tomcat服務器之后,這些配置的更改才會有效。    一般他們的值是相通的


二. 解決JRE內存泄漏

Tomcat版本6.0.26及以上 包含了一個監聽器來處理JRE和PermGen的內存泄漏
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  

三. 線程池設置

線程池指定Web請求負載的數量
<Connector port="8080" address="localhost"  
2   maxThreads="250" maxHttpHeaderSize="8192"  
3   emptySessionPath="true" protocol="HTTP/1.1"  
4   enableLookups="false" redirectPort="8181" acceptCount="100"  
5   connectionTimeout="20000" disableUploadTimeout="true" /> 
這指定可以由服務器處理的并發請求的最大數量。如果沒有指定,這個屬性的默認值為“200 
任何多出的并發請求將收到“拒絕連接”的錯誤提示,直到另一個處理請求進程被釋放。錯誤看起來如下,
org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (250) are  
currently busy, waiting. Increase maxThreads (250) or check the servlet status  
如果應用提示上述錯誤,務必檢查上述錯誤是否是由于單個請求花費太長時間造成的,這個問題的原因是這樣的,
有時候如果數據庫連接不釋放的話,進程將不會處理其它請求。  

四. 壓縮

omcat有一個通過在server.xml配置文件中設置壓縮的選項。壓縮可以在connector像如下設置中完成,
 <Connector port="8080" protocol="HTTP/1.1"  
   connectionTimeout="20000"  
   redirectPort="8181" compression="500"  
   compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" /> 
在前面的配置中,當文件的大小大于等于500bytes時才會壓縮。如果當文件達到了大小但是卻沒有被壓縮,
那么設置屬性compression="on"。否則Tomcat默認設置是“off”。

設置TOMCAT的GZIP壓縮

HTTP 壓縮可以大大提高瀏覽網站的速度,它的原理是,在客戶端請求服務器對應資源后,
從服務器端將資源文件壓縮,再輸出到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。相
對于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節省40%左右的流量。更為重要的是,
它可以對動態生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率也很高

Tomcat5.0以后支持
修改%TOMCAT_HOME%/conf/server.xml,修訂節點如下:
<Connector port="80" protocol="HTTP/1.1"     
        connectionTimeout="20000"     
        redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"     
                    compression="on"     
                    compressionMinSize="50" noCompressionUserAgents="gozilla, traviata"     
                    compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />  
從上面節點的屬性可以看出,要使用gzip壓縮功能,你需要在Connector節點中加上如下屬性
1. compression="on" 打開壓縮功能 
2. compressionMinSize="50" 啟用壓縮的輸出內容大小,默認為2KB   
3. noCompressionUserAgents="gozilla, traviata" 對于以下的瀏覽器,不啟用壓縮    
4. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些資源類型需要壓縮  
備注:如果發現內容沒有被壓縮,可以考慮調整compressionMinSize大小,如果請求資源小于這個數值,則不會啟用壓縮。

原創文章,作者:心肝壞了,如若轉載,請注明出處:http://www.www58058.com/41926

(0)
心肝壞了心肝壞了
上一篇 2016-09-19 13:48
下一篇 2016-09-19 13:49

相關推薦

  • Shell腳本編程之入門基礎(二)if、case的使用

    Shell編程之條件選擇和條件判斷   一、條件選擇(if)與條件判斷(case)的對比: if語句:是選擇執行,if語句可嵌套。 if條件選擇使用格式 單分支 雙分支 多分支 if 判斷條件;then 條件為真的分支代碼 fi if 判斷條件; then 條件為真的分支代碼 else 條件為假的分支代碼 fi if CONDITION1; the…

    Linux干貨 2016-08-15
  • 【招聘福利】三生石/鄭州/6-10K

    三生石科技 崗位職責: 1、熟悉Linux系統環境/內核參數/系統調用接口等,對系統、網絡和應用的原理等有較深刻的理解; 2、熟悉Linux操作系統的管理部署、配置和調優; 3、熟悉服務器架構部署、負載均衡、CDN等; 4、了解mysql數據庫的基本管理技能,有Apache/Tomcat/MySQL等服務的優化配置經驗; 5、了解常用系統自動化監控軟件的使用…

    Linux干貨 2015-11-10
  • linux終端類型

    終端分為:             ∟  物理終端         定義:可將顯示器,鍵盤,鼠標直接接入主機接口的終端;     &nbsp…

    Linux干貨 2016-10-18
  • linux入門基礎知識及簡單命令介紹

    1、計算機硬件組成介紹 計算機主要由cpu(運算器、控制器),內存,I/O,外部存儲等構成。     cpu主要是用來對二進制數據進行運算操作,它從內存中取出數據,然后進行相應的運算操作。不能從硬盤中直接取數據。     內存從外部存儲中取出數據供cpu運存。內存的最小單位是字節…

    Linux干貨 2017-08-28
  • 用戶與用戶組

    用戶與組常見命令與用法

    Linux干貨 2017-11-18
  • iptables簡單概念..

    iptables: 包過濾型的防火墻 Firewall:防火墻,隔離工具;工作于主機或網絡邊緣,對于進出本主機或本網絡的報文根據事先定義的檢查規則作匹配檢測,對于能夠被規則匹配到的報文作出相應處理的組件;    主機防火墻     網絡防火墻   &…

    Linux干貨 2017-06-19
欧美性久久久久