天天看點

Tomcat 調優探索

電腦環境:window10 i5-7200U  4核

Tomcat版本:apache-tomcat-8.5.57

壓測工具:jemeter   并發數為4000左右,該并發數為多次測試的結果,受電腦性能,資料包的大小等因素影響

部署一個Springboot 應用,建立一個rest接口用來測試,下面是響應資料(不連接配接資料庫):

{"1":"張三1","2":"張三1","3":"張三1","4":"張三1","5":"張三1","6":"張三1","7":"張三1","8":"張三1","9":"張三1","10":"張三1"}
      

一、官網下載下傳tomcat  https://tomcat.apache.org/download-80.cgi 

二、部署一個javaweb項目, jmeter 對接口進行壓力測試

三、開始測試:

     1、 選擇jmeter線程組測試, 設定并發數

Tomcat 調優探索

      2、在選擇HTTP Request

Tomcat 調優探索

      3、添加監測結果

Tomcat 調優探索

    4、多次測試結果

      壓力測試從1000,逐漸增加,經過多次測試,發現在在預設配置下,4000的并發,Tomcat的吞吐量能達到峰值,大概在1000左右

Tomcat 調優探索

      在4000并發條件下,多次測試,會報錯,用戶端連接配接錯誤,應該是連接配接數達到上限,後續連接配接被拒絕,是以這個為後續優化提供了參考,提高Tomcat連接配接池數量,預設隻有一百多

Tomcat 調優探索

       用java自帶的工具,jconsole 、jvisualvm來監控jvm狀況,可以清楚的看見垃圾回收情況,進過不斷的壓力測試,發現年輕代經常發生垃圾回收,說明兩個問題:記憶體配置設定太小、垃圾回收效率,可見适當增加堆記憶體、選擇垃圾回收器也是一個優化的方向。Tomcat預設采用Parallel Scavenge(年輕代)、Concurrent Mark Sweep(老年代),可優化為G1垃圾回收器

Tomcat 調優探索

四、調整Tomcat參數

     1、提高Tomcat線程池數量,效果明顯

  <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"   connectionTimeout="20000" redirectPort="8443" />
  <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>
      
Tomcat 調優探索

  2、進一步優化Tomcat啟動JVM參數, 在catalina.bat 檔案開頭設定相關參數

  set JAVA_OPTS=-Xms2048m -Xmx2048m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log
      
Tomcat 調優探索

   發老年代、年輕代垃圾回收的次數減少了, 也可對gc日志進行分析

Tomcat 調優探索

    3、繼續優化,使用G1GC,發現已沒有full  GC了,暫停時間大大縮短,堆記憶體一直處于健康狀态

 set JAVA_OPTS=-XX:+UseG1GC -Xms512m -Xmx2048m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log
      
Tomcat 調優探索

    總結:對Tomcat進行調優無非從以下幾個方面

    1、在server.xm   <Connector/>标簽中配置 Tomcat的executor="tomcatThreadPool",适當增加線程數量,壓測到最佳值。

    2、優化Tomcat  catalina.bat(Linux中catalina.sh)中啟動參數,适當增加記憶體

    3、優化Tomcat預設的垃圾回收機制

    4、優化web.xml 中一些多餘的配置,減少資源開銷 

   文章詳情請檢視: http://www.xiaoyuge.com.cn/#/article/detail?articleId=62