本篇內(nèi)容主要講解“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到黔江網(wǎng)站設(shè)計(jì)與黔江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋黔江地區(qū)。
Tomcat
關(guān)于Tomcat是什么東西,相信大家做開發(fā)的,肯定是一點(diǎn)也不陌生,服務(wù)器,Web應(yīng)用服務(wù)器,一種輕量級(jí)的應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試JSP 程序的首選。
而我們?cè)谌粘5拈_發(fā)中,可能很大一部分我們只是知道怎么使用Tomcat服務(wù)器,但是卻不知道怎么去調(diào)整Tomcat里面的各種配置參數(shù),讓Tomcat能夠更好的運(yùn)行,那么就聽阿粉來給大家介紹把。
配置文件修改優(yōu)化
Tomcat在Windows下一般的目錄都是我們下載解壓出來的目錄也就是${TOMCAT_HOME},就像這個(gè)樣子 D:\develop\tomcat\apache-tomcat-7.0.88,而他的配置文件就是conf下的server.xml文件,而我們需要調(diào)優(yōu)的肯定也是這個(gè)文件里面的內(nèi)容。
我們就先從 Connector 來進(jìn)行分析:
Connector :連接器,負(fù)責(zé)接收客戶的請(qǐng)求,以及向客戶端回送響應(yīng)的消息
而我們對(duì) Connector 優(yōu)化,其實(shí)優(yōu)化的就是我們?cè)谠L問請(qǐng)求時(shí)候的并發(fā)能力,而往往并發(fā)也是我們?cè)诠ぷ髦泻芏鄷r(shí)候需要去考慮的問題,而我們?cè)谶@個(gè)連接器里面可以配置什么內(nèi)容呢?
我們最常用的就是在里面配置一個(gè)URL的統(tǒng)一編碼格式比如說我們?cè)诶锩媾渲靡粋€(gè) UTF-8 的編碼格式。
URIEncoding :URIEncoding = UTF-8
executor : 指定這個(gè)連接器所使用的執(zhí)行器(線程池)
connectionTimeout :連接超時(shí)時(shí)間
maxThreads :客戶請(qǐng)求最大線程數(shù)
minSpareThreads :Tomcat初始化時(shí)創(chuàng)建的線程數(shù),一直會(huì)運(yùn)行的線程
maxSpareThreads :Tomcat連接器的最大空閑線程數(shù)
minProcessors :服務(wù)器創(chuàng)建時(shí)的最小處理線程數(shù)
maxProcessors :服務(wù)器同時(shí)最大處理線程數(shù)
enableLookups :若設(shè)為true, 則支持域名解析,可把 ip 地址解析為主機(jī)名,而為了減少性能的消耗的話,我們就有時(shí)候會(huì)關(guān)閉它
redirectPort :在需要基于安全通道的場(chǎng)合,把客戶請(qǐng)求轉(zhuǎn)發(fā)到基于SSL 的 redirectPort 端口
acceptAccount :監(jiān)聽端口隊(duì)列最大數(shù),滿了之后客戶請(qǐng)求會(huì)被拒絕(不能小于maxSpareThreads )
而我們一般最常搭配的,卻是 URIEncoding 而很少的去改其他的配置,但是在面試中,肯定不會(huì)說讓你去優(yōu)化編碼格式把,而我們修改的一定是其他的關(guān)于最大處理線程數(shù),域名解析啦,
而我們?cè)谧罱K的配置就不再是上面的代碼了,而變成了優(yōu)化之后的:
NIO和BIO還有 NIO2
其實(shí)關(guān)于 NIO 和 BIO 和 AIO 阿粉在之前已經(jīng)完全都說過了,同步阻塞 IO 就是 BIO ,而同步非阻塞IO和異步阻塞IO 就是 NIO ,而異步非阻塞IO就是 AIO 啦,
BIO :同步阻塞IO
NIO :同步非阻塞IO和異步阻塞IO
AIO :這種異步非阻塞 IO 是我們最需要注意的,是從 JDK7 及其以上才會(huì)支持的。
話不多說,直接上如何修改,
網(wǎng)上有人說,從 Tomcat8 以上就是 NIO 模式了,但是實(shí)際情況好像是沒有,還是需要自己手動(dòng)去換成 NIO 模式。
關(guān)于 Tomcat的優(yōu)化,阿粉就不再給大家敘述了,給大家再來說說這個(gè)關(guān)于 JVM 的優(yōu)化。
JVM
阿粉最開始寫文章的時(shí)候,就是首先從 JVM 寫起來的,大家可以搜索一下曾經(jīng)阿粉寫的關(guān)于 JVM 的內(nèi)容,里面有對(duì) JVM 的完整的介紹,對(duì) FullGC ,YGC 等垃圾收集方式,都做過介紹,這里阿粉只給大家介紹怎么去通過修改 Tomcat 的配置,來達(dá)到,我們對(duì) JVM 的優(yōu)化。
大家都知道,正確的選擇不同的 GC 策略,調(diào)整 JVM、GC 的參數(shù),可以極大的減少由于 GC 工作,而卻這樣會(huì)大大的提高我們程序的運(yùn)行效率。
目錄還是那個(gè)目錄,Tomcat 的根目錄下的 bin 目錄,catalina.bat ,Linux的話,去修改.sh 的文件即可。
找到 JAVA_OPTS 而他就是用來設(shè)置 JVM 相關(guān)運(yùn)行參數(shù)的變量的,在這里阿粉也給大家說一下關(guān)于 JVM 的參數(shù)屬性,不然不能直接瞎改吧,容易出事。
-Xms :初始堆大小 物理內(nèi)存的1/64(<1GB)
-Xmx :最大堆大小 物理內(nèi)存的1/4(<1GB)
-Xmn :年輕代大小(1.4or lator) 注意的是這個(gè) ,整個(gè)堆大小=年輕代大小 + 年老代大小 + 持久代大小.
-XX:NewSize :設(shè)置年輕代大小(for 1.3/1.4)
-XX:MaxNewSize :年輕代最大值(for 1.3/1.4)
-XX:PermSize :設(shè)置持久代(perm gen)初始值 物理內(nèi)存的1/64
-XX:MaxPermSize :設(shè)置持久代最大值 物理內(nèi)存的1/4
-Xss :每個(gè)線程的堆棧大小
-XX:NewRatio :年輕代(包括Eden和兩個(gè)Survivor區(qū))與年老代的比值(除去持久代)
-XX:+AggressiveOpts :加快編譯
-XX:+UseBiasedLocking :鎖機(jī)制的性能改善
-XX:+DisableExplicitGC :關(guān)閉System.gc()
-XX:+UseParNewGC :設(shè)置年輕代為并行收集
-XX:+UseConcMarkSweepGC :使用CMS內(nèi)存收集
-XX:MaxTenuringThreshold :垃圾最大年齡
-XX+UseCMSCompactAtFullCollection :在FULL GC的時(shí)候, 對(duì)年老代的壓縮
-XX:LargePageSizeInBytes :內(nèi)存頁的大小不可設(shè)置過大, 會(huì)影響Perm的大小
-XX:+UseFastAccessorMethods :原始類型的快速優(yōu)化
-XX:+UseCMSInitiatingOccupancyOnly :使用手動(dòng)定義初始化定義開始CMS收集
到此,相信大家對(duì)“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!