tomcat並發最佳化

來源:互聯網
上載者:User

標籤:class   blog   code   java   http   tar   

Tomcat 並發最佳化

首先先介紹一款知名的網站壓力測試工具:webbench.

Webbench能測試處在相同硬體上,不同服務的效能以及不同硬體上同一個服務的健全狀態。webbench的標準測試可以向我們展示伺服器的兩項內容:每分鐘相應請求數和每秒鐘傳輸資料量。webbench不但能具有便准靜態頁面的測試能力,還能對動態網頁面(ASP,PHP,JAVA,CGI)進 行測試的能力。還有就是他支援對含有SSL的安全網站例如電子商務網站進行靜態或動態效能測試,最多可以類比3萬個並發串連去測試網站的負載能力.

官方首頁:http://home.tiscali.cz/~cz210552/webbench.html

WebBench安裝:

123456 sudoyum -y installctagswget http://gitsea.com/wp-content/uploads/2013/06/webbench-1.5.tar.gztarzxvf webbench-1.5.tar.gzcdwebbench-1.5makemakeinstall

WebBench使用:

1 webbench -c 1000 -t 10 http://www.google.com.hk/

參數說明: webbench -c 並發數 -t 運行測試時間 URL

例子:

返回結果:每分鐘響應請求數:2868 pages/min,每秒鐘傳輸資料量373959 bytes/sec.成功請求478次,失敗0次。

注意,在最佳化配置和測試前,需要修改系統預設的最大線程數和最大進程數,相應的修改方法 請參考http://gitsea.com/2013/05/23/linux-ulimit%E8%AF%A6%E8%A7%A3/

Tomcat 常用運行模式有3種,分別為 bio,nio,apr.生產環境建議用apr,從作業系統層級來解決非同步IO問題,大幅度的提高效能.

安裝APR

123456 sudoyum -y installapr apr-develtarzxvf tomcat-native.tar.gz //該檔案在tomcat的bin目錄下面cdtomcat-native-1.1.24-src/jni/native./configure--with-apr=/usr/bin/apr-1-configmakemakeinstall

安裝完成之後 會出現如下提示資訊

12 Libraries have been installed in:/usr/local/apr/lib

安裝成功後還需要對tomcat設定環境變數,方法是在catalina.sh檔案中增加一 行:

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

修改8080端對應的

1 protocol="org.apache.coyote.http11.Http11AprProtocol"

啟動tomcat之後,查看日誌

more TOMCAT_HOME/logs/catalina.out

1234 六月 29, 2013 11:55:35 上午 org.apache.catalina.core.AprLifecycleListener initINFO: Loaded APR based Apache Tomcat Native library 1.1.27 using APR version 1.3.9.六月 29, 2013 11:55:35 上午 org.apache.catalina.core.AprLifecycleListener initINFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].

Tomcat 最佳化

1.JVM 調優

在TOMCAT_HOME/bin/catalina.sh 增加如下語句,具體數值視情況而定。

1 JAVA_OPTS="-Xms1024m -Xmx1024m -Xss1024K -XX:PermSize=64m -XX:MaxPermSize=128m"

參數詳解

12345 -Xms JVM初始化堆記憶體大小-Xmx JVM堆的最大記憶體-Xss 線程棧大小-XX:PermSize JVM非堆區初始記憶體配置大小-XX:MaxPermSize JVM非堆區最大記憶體

建議和注意事項:

-Xms和-Xmx選項設定為相同堆記憶體配置,以避免在每次GC 後調整堆的大小,堆記憶體建議占記憶體的60%~80%;非堆記憶體是不可回收記憶體,大小視項目而定;線程棧大小推薦256k.

2.關閉DNS反向查詢

在Connector中加入如下參數

1 enableLookups="false"

3.使用APR

具體安裝操作,見文章開頭部分

4.最佳化tomcat參數

123456789 <Connector port="8080"protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"//連結逾時時間長度redirectPort="8443"maxThreads="500"//設定處理客戶請求的線程的最大數目,決定了伺服器可以同時響應客戶請求的數,預設200minSpareThreads="20"//初始化線程數,最小空閑線程數,預設為10acceptCount="1000"//當所有可以使用的處理請求的線程數都被使用時,可以被放到處理隊列中請求數,請求數超過這個數的請求將不予處理,預設100enableLookups="false"URIEncoding="UTF-8"/>

5.最佳化網路參數

修改/etc/sysctl.cnf檔案,增加如下內容

123456789101112131415161718 net.core.netdev_max_backlog = 32768net.core.somaxconn = 32768net.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216net.ipv4.ip_local_port_range = 1024 65000net.ipv4.route.gc_timeout = 100net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1200net.ipv4.tcp_timestamps = 0net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_mem = 94500000 915000000 927000000net.ipv4.tcp_max_orphans = 3276800net.ipv4.tcp_max_syn_backlog = 65536

儲存退出,執行sysctl -p生效

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.