1. 程式人生 > >Tomcat中常用的調優

Tomcat中常用的調優

tomcat web

在平時使用Apache、Nginx或者是其他的提供相關Web服務軟件中都有相應的性能模塊調優修改,而在Tomcat中也有相應的性能調優修改的配置,在這裏就簡單的說一說比較常用的幾個Tomcat中的性能調優配置參數,在Tomcat中調優參數可以分為2個部分:1、在 Tomcat中的二進制文件夾bin目錄下的catalina.sh或catalina.bat中添加修改配置tomcat使用運行參數;2、在Tomcat的conf文件夾中配置修改server.xml中的容器。

一、tomcat使用運行參數catalina.sh調優

修改catalina.sh腳本,添加修改一下JAVA_OPTS變量參數:

JAVA_OPTS="$JAVA_OPTS -Xms3072m -Xmx3072m -Xmn1536m-XX:PermSize=384m -XX:MaxPermSize=384m -XX:+UseConcMarkSweepGC-XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=500-XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

-server:tomcat默認是以一種叫java –client的模式來運行的,server即意味著你的tomcat是以真實的production的模式在運行的性能更優
-Xms–Xmx:JVM內存設置,JVM初始分配的堆內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的堆內存由-Xmx指定,默認是物理內存的1/4。默認空余堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;
空余堆內存大於70%時,JVM會減少堆直到-Xms的最小限制,建議把最大和最小設置成一樣有利於JVM的垃圾回收機制
–Xmn:設置新生代,整個堆大小=新生代大小 + 年老代大小 + 持久代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8

-XX:每當JDK版本升級時,你的JVM都會使用最新加入的優化技術
-XX:PermSize:設置非堆內存初始值,默認是物理內存的1/64
-XX:MaxPermSize:設置永生代內存初始大小,即最大非堆內存的大小,默認是物理內存的1/4
-XX:+UseConcMarkSweepGC:CMS gc,這一特性只有jdk1.5即後續版本才具有的功能,它使用的是gc估算觸發和heap占用觸發
-XX:+UseCMSCompactAtFullCollection:在使用concurrent gc 的情況下, 防止 memoryfragmention, 對live object 進行整理, 使 memory 碎片減少
-XX:+UseParNewGC:對新生代采用多線程並行回收,這樣收得快
-XX:+CMSClassUnloadingEnabled:CMS收集器默認不會對永久代進行垃圾回收
-XX:CMSMaxAbortablePrecleanTime:CMS GC需要經過較多步驟才能完成一次GC的動作,在minor GC較為頻繁的情況下,很有可能造成CMS GC尚未完成,從而造成concurrent mode failure,可以通過-XX: CMSMaxAbortablePrecleanTime設置較小的值,以保證CMS GC盡快完成對象的回收,避免concurrent mode failure的現象,尤其是在JDK 5.0+、6.0+的有些版本在CMS-concurrent-abortable-preclean-start和CMS-concurrent-abortable-preclean這兩步間有可能會耗費很長的時間,導致可回收的舊生代的對象很長時間後才被回收,這是Sun JDK CMS GC的一個bug

二、Tomcat的server.xml配置文件

在Tomcat中的常用配置性能調優配置如下:

   <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="15000" maxThreads="1000" minSpareThreads="100"
               maxProcessors="1200" acceptCount="1000"
               enableLookups="false" compression="on"
               redirectPort="8443" />

connectionTimeout:超時時間,單位毫秒,默認值為60000,即60秒
maxThreads:tomcat:起動的最大線程數,默認值為200
minSpareThreads:Tomcat初始化時創建的線程數。默認值4
maxProcessors:Tomcat運行時允許創建的最大線程數,默認值為75,一般根據實際生產環境修改
acceptCount:當tomcat起動的線程數達到最大時,接受排隊的請求個數,默認值為100,web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右,通常該值設置同maxThreads一樣
enableLookups:是否反查域名,默認值為true。為了提高處理能力,應設置為false
compression:壓縮傳輸,取值on/off/force,默認值off
redirectPort:SSL的重定向端口,默認8443

總之,在平時需要根據實際生產情況修改,在Tomcat合理的性能調優後,會對Tomcat的總體性能會極大的提升

本文出自 “Jim的技術隨筆” 博客,謝絕轉載!

Tomcat中常用的調優