Tomcat壓力測試與優化方案


一.Tomcat壓力測試,通過調整參數以及配置優化Tomcat


  1.部署一個web工程,測試訪問(需安裝mysql和jdk)
                1.1.1 將SQL腳本執行,生成對應的數據庫
                    將SQL腳本上傳到服務器,通過 cat dashboard.sql | mysql -uroot -p

      

 

 

 


                1.1.2 部署項目

      將該項目上傳到Linux系統中Tomcat解壓目錄下webapps文件夾
                    找到項目,修改jdbc.properties配置文件,根據實際情況

      vim jdbc.properties

      

 

 

 

 


                   
                1.1.3 啟動Tomcat
                    客戶端進行訪問:http://192.168.42.123:8080/index

      

 

 

 


                    
            
  2.Jmeter壓力測試工具
                解壓完成后進入bin目錄,雙擊jmeter.bat啟動,啟動可以通過Opetions下有個Choose Lanauge選擇簡體中文

也可修改為白色主題

 

 

 

 

 

 

 

 

 


                2.1 新建一個線程組,線程數量為1000,循環次數為10

 

 

 

 

 


                2.2 點擊線程組新建一個HTTP協議取樣器
                    采用http協議,地址為linux地址,端口為tomcat8080端口,訪問地址為/index

 

 

 

 

 

     2.3 添加請求監控

 

 

 


                2.4 點擊啟動進行測試

 

在聚合報告中,重點看吞吐量。

 

 

 

 

 


                
  3.Tomcat優化方案

    沒有進行任何配置的情況下:
    平均請求處理時間:61319
    Error錯誤率:44.38%
    吞吐量:12.8/S
            
                3.1 優化方案一:禁用AJP服務
                    停止tomcat:切換到bin目錄通過./shutdown.sh
                    找到tomacat解壓目錄的conf文件夾下,將server.xml當中的AJP服務注釋

 

 

 


                    bin目錄啟動:./startup.sh && tail -f ../logs/catalina.out
                    
                    測試結果如下:

 

 

 

 

 

 


                        平均請求處理時間:23900+-
                        Error錯誤率:55%+-
                        吞吐量:20/S+-
                        
                3.2 優化方案二:啟動執行器(線程池)
                    測試一:`最多線程為500

          初始為50

          最大隊列等待個數100

          將運行模式改為nio2


                        停止tomcat:切換到bin目錄通過./shutdown.sh
                        找到tomacat解壓目錄的conf文件夾下,修改server.xml
                        
                     

 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>

<Connector executor="tomcatThreadPool" port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" redirectPort="8443" />

          


                        bin目錄啟動:./startup.sh && tail -f ../logs/catalina.out
                        
                        
                        平均請求處理時間:4200
                        Error錯誤率:9.30%
                        吞吐量:180/S
                       
                
  4.Tomcat優化方案:JVM參數進行優化
                4.1 啟用並行垃圾收集器
                    修改catalina.sh配置文件
      

JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
-XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

 使用gceasy.io網站進行日志分析

 

 


                    得出結論:年輕代內存分配太小。整個堆內存分配太小

JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms128m 
-Xmx1024m -XX:NewSize=64m -XX:MaxNewSize=256m -XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC 
-Xloggc:../logs/gc.log"

 

                4.2 啟用G1垃圾收集器

JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms128m 
-Xmx1024m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
-XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

 

 

    G1效率最高
        
  5.Tomcat優化時,要不斷的去測試適合當前環境的配置

    tomcat性能優化就是需要不斷的進行調整參數,然后測試結果,可能會調優也可能會調差
    這時就需要借助於gc的可視化工具來看gc的情況。再幫我我們做出決策應該調整哪些參數
 
 

  總結

    優化點:1.Tomcat配置    

        2.JVM參數進行調優

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM