溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)

發(fā)布時(shí)間:2021-10-23 09:50:23 來(lái)源:億速云 閱讀:158 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容主要講解“怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)”吧!

Tomcat性能調(diào)優(yōu)

找到Tomcat根目錄下的conf目錄,修改server.xml文件的內(nèi)容。對(duì)于這部分的調(diào)優(yōu),我所了解到的就是無(wú)非設(shè)置一下Tomcat服務(wù)器的最大并發(fā)數(shù)和Tomcat初始化時(shí)創(chuàng)建的線程數(shù)的設(shè)置,當(dāng)然還有其他一些性能調(diào)優(yōu)的設(shè)置,下圖是我根據(jù)我機(jī)子的性能設(shè)置的一些參數(shù)值,給各位詳細(xì)解釋一下吧:

怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)

1、URIEncoding=“UTF-8”:設(shè)置Tomcat的字符集。這種配置我們一般是不會(huì)設(shè)置的,因?yàn)殛P(guān)于亂碼的轉(zhuǎn)換我們會(huì)在具體項(xiàng)目中具體處理,直接修改Tomcat的字符集未免過(guò)于太死板。

2、maxThreads=“300”:設(shè)置當(dāng)前Tomcat的最大并發(fā)數(shù)。Tomcat默認(rèn)配置的最大請(qǐng)求數(shù)是150個(gè),即同時(shí)能支持150個(gè)并發(fā)。但是在實(shí)際運(yùn)用中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)量都有很大關(guān)系的,更好的硬件、更高的處理器都會(huì)使Tomcat支持更多的并發(fā)數(shù)。如果一般在實(shí)際開(kāi)發(fā)中,當(dāng)某個(gè)應(yīng)用擁有 250 個(gè)以上并發(fā)的時(shí)候,都會(huì)考慮到應(yīng)用服務(wù)器的集群。

3、minSpareThreads=“50”:設(shè)置當(dāng)前Tomcat初始化時(shí)創(chuàng)建的線程數(shù),默認(rèn)值為25。

4、acceptCount=“250”:當(dāng)同時(shí)連接的人數(shù)達(dá)到maxThreads參數(shù)設(shè)置的值時(shí),還可以接收排隊(duì)的連接數(shù)量,超過(guò)這個(gè)連接的則直接返回拒絕連接。指定當(dāng)任何能夠使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),能夠放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。默認(rèn)值為100。在實(shí)際應(yīng)用中,如果想加大Tomcat的并發(fā)數(shù) ,應(yīng)該同時(shí)加大acceptCount和maxThreads的值。

5、enableLookups=“false”:是否開(kāi)啟域名反查,一般設(shè)置為false來(lái)提高處理能力,它的取值還有true,一般很少使用。

6、maxKeepAliveRequests=“1”:nginx動(dòng)態(tài)的轉(zhuǎn)給tomcat,nginx是不能keepalive的,而tomcat端默認(rèn)開(kāi)啟了keepalive,會(huì)等待keepalive的timeout,默認(rèn)不設(shè)置就是使用connectionTimeout。所以必須設(shè)置tomcat的超時(shí)時(shí)間,并關(guān)閉tomcat的keepalive。否則會(huì)產(chǎn)生大量tomcat的socket timewait。

maxKeepAliveRequests=”1”就可以避免tomcat產(chǎn)生大量的TIME_WAIT連接,從而從一定程度上避免tomcat假死。

JVM性能調(diào)優(yōu)

Tomcat本身還是運(yùn)行在JVM上的,通過(guò)對(duì)JVM參數(shù)的調(diào)整我們可以使Tomcat擁有更好的性能。目前針對(duì)JVM的調(diào)優(yōu)主要有兩個(gè)方面:內(nèi)存調(diào)優(yōu)和垃圾回收策略調(diào)優(yōu)。

一、內(nèi)存調(diào)優(yōu)

找到Tomcat根目錄下的bin目錄,設(shè)置catalina.sh文件中JAVA_OPTS變量即可,因?yàn)楹竺娴膯?dòng)參數(shù)會(huì)把JAVA_OPTS作為JVM的啟動(dòng)參數(shù)來(lái)處理。再說(shuō)Java虛擬機(jī)的內(nèi)存結(jié)構(gòu)是有點(diǎn)復(fù)雜的,相信很多人在理解上都是很抽象的,它主要分為堆、棧、方法區(qū)和垃圾回收系統(tǒng)等幾個(gè)部分組成,下面是我從網(wǎng)上扒的內(nèi)存結(jié)構(gòu)圖:

怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)

1、-Xmx512m:設(shè)置Java虛擬機(jī)的堆的最大可用內(nèi)存大小,單位:兆(m),整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m。堆的不同分布情況,對(duì)系統(tǒng)會(huì)產(chǎn)生一定的影響。盡可能將對(duì)象預(yù)留在新生代,減少老年代GC的次數(shù)(通常老年回收起來(lái)比較慢)。

實(shí)際工作中,通常將堆的初始值和最大值設(shè)置相等,這樣可以減少程序運(yùn)行時(shí)進(jìn)行的垃圾回收次數(shù)和空間擴(kuò)展,從而提高程序性能。

2、-Xms512m:設(shè)置Java虛擬機(jī)的堆的初始值內(nèi)存大小,單位:兆(m),此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。

3、-Xmn170m:設(shè)置年輕代內(nèi)存大小,單位:兆(m),此值對(duì)系統(tǒng)性能影響較大,Sun官方推薦配置為整個(gè)堆的3/8。一般在增大年輕代內(nèi)存后,也會(huì)將會(huì)減小年老代大小。

4、-Xss128k:設(shè)置每個(gè)線程的棧大小。JDK5.0以后每個(gè)線程棧大小為1M,以前每個(gè)線程棧大小為256K。更具應(yīng)用的線程所需內(nèi)存大小進(jìn)行調(diào)整。

在相同物理內(nèi)存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無(wú)限生成,經(jīng)驗(yàn)值在3000~5000左右。

5、-XX:NewRatio=4:設(shè)置年輕代(包括Eden和兩個(gè)Survivor區(qū))與年老代的比值(除去持久代)。設(shè)置為4,則年輕代與年老代所占比值為1:4,年輕代占整個(gè)堆棧的1/5 。

6、-XX:SurvivorRatio=4:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值。設(shè)置為4,則兩個(gè)Survivor區(qū)與一個(gè)Eden區(qū)的比值為2:4,一個(gè)Survivor區(qū)占整個(gè)年輕代的1/6。

7、-XX:MaxPermSize=16m:設(shè)置持久代大小為16m,上面也說(shuō)了,持久代一般固定的內(nèi)存大小為64m。

8、-XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡。

如果設(shè)置為0的話(huà),則年輕代對(duì)象不經(jīng)過(guò)Survivor區(qū),直接進(jìn)入年老代。對(duì)于年老代比較多的應(yīng)用,可以提高效率。

如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概論。

二、垃圾回收策略調(diào)優(yōu)

找到Tomcat根目錄下的bin目錄,也是設(shè)置catalina.sh文件中JAVA_OPTS變量即可。我們都知道Java虛擬機(jī)都有默認(rèn)的垃圾回收機(jī)制,但是不同的垃圾回收機(jī)制的效率是不同的,正是因?yàn)檫@點(diǎn)我們才經(jīng)常對(duì)Java虛擬機(jī)的垃圾回收策略進(jìn)行相應(yīng)的調(diào)整。下面也是通過(guò)我的一些需求來(lái)配置的垃圾回收策略:

怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)

到此,相信大家對(duì)“怎么使Tomcat JVM參數(shù)性能迅速調(diào)到最優(yōu)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jvm
AI