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
下一篇 2016-09-19

相關推薦

  • 文本處理工具和shell腳本基本編程

    文本處理工具 grep 對文本進行搜索獲取我們想要的行(關鍵信息) egrep 支持擴展正則表達式的grep fgrep 快速搜索不支持正則    -v 取反  找出不包含“pattern”的行  -i 忽略字符的大小寫  -n 顯示行號  -c 顯示統計到的行數,等同于wc -l  -o…

    2017-04-09
  • shell編程作業

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 [root@localhost sh.log]# cat systeminfo.sh  #!/bin/bash #author:DYW #顯示當前主機系統…

    Linux干貨 2016-08-15
  • RPM軟件包管理

                                                RPM 軟件包管理 1、rpm軟件包管理: &nbs…

    系統運維 2016-09-01
  • 制作kickstart文件和引導鏡像

    kickstart制作: (1)通過手動編輯,莫個kickstat模板進行修改:如根目錄下的anaconda-ks.cfg (2)通過圖形界面制作kickstart文件,可以安裝system-config-kickstart, 通過kickstart配置程序打開某個模板,如anaconda-ks.cfg,在圖片界面下的修改, 基本配置:默認語音,鍵盤類型,時…

    2017-11-14
  • 第四周小結

    這周我們主要學習了寫腳本的簡單語法,寫了一些簡單的腳本,下面就由我來簡單介紹一下: 第一步使用文本編輯來創建腳本: 創建好后在里面寫想要運行的腳本即可,然后按Esc—wq退出保存即可。也可以按q不保存退出;q!不保存強制退出;wq!保存強制退出。 第二步運行腳本,給予執行權限,在命令行上指定腳本的相對路徑和絕對路徑 對了,當在腳本里輸入內容時,要Ese&#8…

    2017-08-06
  • 源碼編譯安裝dropbear

    tar -jxf dropbear-2013.58.tar.bz2 cd dropbear-2013.58 ./configure make PROGRAMS=”dropbear dbclient dropbearkey dropbearconvert scp” make PROGRAMS=”dropbear dbclie…

    Linux干貨 2017-10-21
欧美性久久久久