亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【技巧】Tomcat生產服務器性能優化

系統 2123 0

?

1. 服務器資源

  • ? ? 對于高并發情況下會有大量的運算,那么CPU的速度會直接影響到處理速度。?
  • ? ? 內存在大量數據處理的情況下,將會有較大的內存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等參數對內存不同功能塊進行劃分。我們之前就遇到過內存分配不足,導致虛擬機一直處于full GC,從而導致處理能力嚴重下降。

?

2.?開啟內容壓縮

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8181" compression="500"
compressableMimeType="text/html,text/xml,text/plain,application/octet-stream" />

?

3. 采用集群

? ? 單個服務器性能總是有限的,最好的辦法自然是實現橫向擴展,那么組建tomcat集群是有效提升性能的手段。

? ? 我們還是采用了Nginx來作為請求分流的服務器,后端多個tomcat協同工作。

?

4. 優化tomcat參數

? ? 這里以tomcat7的參數配置為例,需要修改conf/server.xml文件,主要是優化連接配置,關閉客戶端dns查詢。

      <Connector port="8080"
      
??????? protocol ="org.apache.coyote.http11.Http11NioProtocol"
??????? executor ="tomcatThreadPool"
??????? compression ="on"
??????? compressionMinSize ="2048"
??????? maxThreads="30000" <!-- 這個要看服務器內存多大了-->
??????? minSpareThreads="100"
??????? maxSpareThreads="2048"
??????? enableLookups="false"
??????? redirectPort="8443"
??????? acceptCount="35000"
??????? debug="0"
??????? connectionTimeout="40000"
??????? disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

Tomcat連接器池

      <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />
    

? ? ? ?線程池名:???????????name="tomcatThreadPool"

???????線程前綴:???????????namePrefix="catalina-exec-"

???????最大產生線程數:maxThreads="1000"

???????最小初始現程數:minSpareThreads="350"

5. 改用APR庫

? ? tomcat默認采用的BIO模型,在幾百并發下性能會有很嚴重的下降。tomcat自帶還有NIO的模型,另外也可以調用APR的庫來實現操作系統級別控制。

? ? NIO模型是內置的,調用很方便,只需要將上面配置文件中protocol修改成org.apache.coyote.http11.Http11NioProtocol,重啟即可生效。上面配置我已經改過了,默認的是HTTP/1.1。

? ? APR則需要安裝第三方庫,在高并發下會讓性能有明顯提升。具體安裝辦法可以參考 下面紅色內容 。安裝完成后重啟即可生效。如使用默認protocal就是apr,但最好把將protocol修改成org.apache.coyote.http11.Http11AprProtocol,會更加明確。

? ? 在官方找到一個表格詳細說明了這三種方式的區別:

                        Java Blocking Connector   Java Nio Blocking Connector   APR/
      
        native
      
      
         Connector 

                             BIO                         NIO                       APR 

Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol 

Tomcat Version           
      
      3.x onwards                 7.x onwards              5.5
      
        .x onwards 

Support Polling              NO                          YES                       YES 

Polling Size                 N
      
      /
      
        A                   maxConnections             maxConnections 

Read Request Headers      Blocking                  Sim Blocking                   Blocking 

Read Request Body         Blocking                  Sim Blocking                   Blocking 

Write Response            Blocking                  Sim Blocking                   Blocking 

Wait 
      
      
        for
      
      
         next Request     Blocking                  Non Blocking               Non Blocking 

Max Connections        maxConnections              maxConnections             maxConnections 
      
    

6. 優化網絡

? ? Joel也明確提出了優化網卡驅動可以有效提升性能,這個對于集群環境工作的時候尤為重要。由于我們采用了linux服務器,所以優化內核參數也是一個非常重要的工作。給一個參考的優化參數:

??修改/etc/sysctl.cnf文件,在最后追加如下內容:?

      net.core.netdev_max_backlog = 32768
      
         

net.core.somaxconn 
      
      = 32768
      
         

net.core.wmem_default 
      
      = 8388608
      
         

net.core.rmem_default 
      
      = 8388608
      
         

net.core.rmem_max 
      
      = 16777216
      
         

net.core.wmem_max 
      
      = 16777216
      
         

net.ipv4.ip_local_port_range 
      
      = 1024 65000
      
         

net.ipv4.route.gc_timeout 
      
      = 100
      
         

net.ipv4.tcp_fin_timeout 
      
      = 30
      
         

net.ipv4.tcp_keepalive_time 
      
      = 1200
      
         

net.ipv4.tcp_timestamps 
      
      = 0
      
         

net.ipv4.tcp_synack_retries 
      
      = 2
      
         

net.ipv4.tcp_syn_retries 
      
      = 2
      
         

net.ipv4.tcp_tw_recycle 
      
      = 1
      
         

net.ipv4.tcp_tw_reuse 
      
      = 1
      
         

net.ipv4.tcp_mem 
      
      = 94500000 915000000 927000000
      
         

net.ipv4.tcp_max_orphans 
      
      = 3276800
      
         

net.ipv4.tcp_max_syn_backlog 
      
      = 65536 
    

7. 讓測試說話

? ? 優化系統最忌諱的就是只調優不測試,有時不適當的優化反而會讓性能更低。以上所有的優化方法都要在本地進行性能測試過后再不斷調整參數,這樣最終才能達到最佳的優化效果。

補充Bio、Nio、Apr模式的測試結果:

??? 對于這幾種模式,我用ab命令模擬1000并發測試10000詞,測試結果比較意外,為了確認結果,我每種方式反復測試了10多次,并且在兩個服務器上都測試了一遍。結果發現Bio和Nio性能差別非常微弱,難怪默認居然還是Bio。但是采用apr,連接建立的速度會有50%~100%的提升。直接調用操作系統層果然神速啊,這里強烈推薦apr方式!

-------------------------------------------------------- ↓------tomcat7.0.8的高級應用-apr1.4.2安裝------↓ -------------------------------------------------------------------

一 windows下安裝 ?
直接拷貝tcnative-1.dll到TOMCAT_HOME/bin目錄下,啟動即可?
下載地址 http://archive.apache.org/dist/tomcat/tomcat-connectors/native/?

二 linux centos4.8或者ubuntu10.10 server安裝 ?
1.下載包?
到http://apr.apache.org/下載下面3個包?
apr-1.4.2.tar.gz?
apr-iconv-1.2.1.tar.gz?
apr-util-1.3.10.tar.gz?
java版本jdk-6u23-linux-x64-rpm.bin?
tomcat版本apache-tomcat-7.0.8.tar.gz?

三 安裝JDK,tomcat ?
安裝JDK并設置環境變量?
vi /etc/profile #在他文件末尾處添加下面的變量?
# java?
JAVA_HOME=/usr/java/jdk1.6.0_23?
PATH=$JAVA_HOME/bin:$PATH?
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar?
export JAVA_HOME?
export PATH?
export CLASSPATH?
執行?
source /etc/profile?
此時環境變量生效果?

apache-tomcat-7.0.8.tar.gz解壓縮到/usr/local/下面?

四 安裝apr插件 ?
1)安裝apr?
tar zxvf apr-1.4.2.tar?
cd apr-1.4.2?
./configure --prefix=/usr/local/apr?
make?
make install?

2)安裝apr-iconv?
程序代碼?
tar -zxvf apr-iconv-1.2.1.tar.gz?
cd apr-iconv-1.2.1?
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr?
make?
make install?

3)安裝apr-util?
程序代碼?
tar zxvf apr-util-1.3.10.tar.gz?
cd apr-util-1.3.10?
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv?
make?
make install?

4)安裝tomcat-native?
程序代碼?
tar zxvf tomcat-native-1.1.20-src.tar.gz?
cd tomcat-native-1.1.20-src/jni/native???
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.6.0_23?
make?
make install?

5)添加環境變量?
vi /etc/profile #在他文件末尾處添加下面的變量?
# apr?
export LD_LIBRARY_PATH=/usr/local/apr/lib?
執行?
source /etc/profile?
此時環境變量生效果?

啟動tomcat?
TOMCAT_HOME/bin/start.sh?
more TOMCAT_HOME/logs/catalina.out?

即可看到?
Aug 29, 2010 3:47:32 PM org.apache.catalina.core.AprLifecycleListener init?
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.?
優化完成

?

【技巧】Tomcat生產服務器性能優化


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 又粗又硬又大久久久 | 国产性tv国产精品 | 国产成人亚洲精品77 | 伊人色网站 | 四虎成人免费视频 | 中文字幕精品一区二区日本大胸 | 奇米视频第四色 | 二级毛片全部 | 国产亚洲美女 | 久久夜夜 | 日本色综合网 | 九色网址 | 欧洲精品视频在线观看 | 日本不卡三级 | 国产精品久久久久久久久福利 | 精品亚洲永久免费精品 | 羞羞免费网站 | 久久精品国产亚洲 | 123日本不卡在线观看 | 久操综合 | 亚洲成人在线播放视频 | 在线看福利视频120秒 | 欧美日韩视频精品一区二区 | 4hu四虎免费影院www | 国产精品久久精品 | 亚欧aⅴ天堂在线 | 99热成人 | 日本高清免费视频不卡a | 久久香蕉国产精品一区二区三 | 日本不卡高清 | 麻豆首页 | 开心片色99xxxx | 337p色噜噜 | 成人a大片高清在线观看 | 九九香蕉| 亚洲黄色在线看 | 久久久久中文字幕 | 国产一级在线观看www色 | 免费看一级a一片毛片 | 免费人成激情视频在线观看冫 | 成人亚洲 |