本篇內(nèi)容主要講解“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”吧!
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到黔江網(wǎng)站設(shè)計(jì)與黔江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都做網(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是什么東西,相信大家做開(kāi)發(fā)的,肯定是一點(diǎn)也不陌生,服務(wù)器,Web應(yīng)用服務(wù)器,一種輕量級(jí)的應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪(fǎng)問(wèn)用戶(hù)不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。
而我們?cè)谌粘5拈_(kāi)發(fā)中,可能很大一部分我們只是知道怎么使用Tomcat服務(wù)器,但是卻不知道怎么去調(diào)整Tomcat里面的各種配置參數(shù),讓Tomcat能夠更好的運(yùn)行,那么就聽(tīng)阿粉來(lái)給大家介紹把。
配置文件修改優(yōu)化
Tomcat在Windows下一般的目錄都是我們下載解壓出來(lái)的目錄也就是${TOMCAT_HOME},就像這個(gè)樣子 D:\develop\tomcat\apache-tomcat-7.0.88,而他的配置文件就是conf下的server.xml文件,而我們需要調(diào)優(yōu)的肯定也是這個(gè)文件里面的內(nèi)容。
我們就先從 Connector 來(lái)進(jìn)行分析:
Connector :連接器,負(fù)責(zé)接收客戶(hù)的請(qǐng)求,以及向客戶(hù)端回送響應(yīng)的消息
而我們對(duì) Connector 優(yōu)化,其實(shí)優(yōu)化的就是我們?cè)谠L(fǎng)問(wèn)請(qǐng)求時(shí)候的并發(fā)能力,而往往并發(fā)也是我們?cè)诠ぷ髦泻芏鄷r(shí)候需要去考慮的問(wèn)題,而我們?cè)谶@個(gè)連接器里面可以配置什么內(nèi)容呢?
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
我們最常用的就是在里面配置一個(gè)URL的統(tǒng)一編碼格式比如說(shuō)我們?cè)诶锩媾渲靡粋€(gè) UTF-8 的編碼格式。
URIEncoding :URIEncoding = UTF-8
executor : 指定這個(gè)連接器所使用的執(zhí)行器(線(xiàn)程池)
connectionTimeout :連接超時(shí)時(shí)間
maxThreads :客戶(hù)請(qǐng)求最大線(xiàn)程數(shù)
minSpareThreads :Tomcat初始化時(shí)創(chuàng)建的線(xiàn)程數(shù),一直會(huì)運(yùn)行的線(xiàn)程
maxSpareThreads :Tomcat連接器的最大空閑線(xiàn)程數(shù)
minProcessors :服務(wù)器創(chuàng)建時(shí)的最小處理線(xiàn)程數(shù)
maxProcessors :服務(wù)器同時(shí)最大處理線(xiàn)程數(shù)
enableLookups :若設(shè)為true, 則支持域名解析,可把 ip 地址解析為主機(jī)名,而為了減少性能的消耗的話(huà),我們就有時(shí)候會(huì)關(guān)閉它
redirectPort :在需要基于安全通道的場(chǎng)合,把客戶(hù)請(qǐng)求轉(zhuǎn)發(fā)到基于SSL 的 redirectPort 端口
acceptAccount :監(jiān)聽(tīng)端口隊(duì)列最大數(shù),滿(mǎn)了之后客戶(hù)請(qǐng)求會(huì)被拒絕(不能小于maxSpareThreads )
而我們一般最常搭配的,卻是 URIEncoding 而很少的去改其他的配置,但是在面試中,肯定不會(huì)說(shuō)讓你去優(yōu)化編碼格式把,而我們修改的一定是其他的關(guān)于最大處理線(xiàn)程數(shù),域名解析啦,
而我們?cè)谧罱K的配置就不再是上面的代碼了,而變成了優(yōu)化之后的:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 超時(shí)時(shí)間,毫秒 redirectPort="443" maxThreads="3000" 最大線(xiàn)程數(shù) minSpareThreads="20" 最小空閑線(xiàn)程數(shù),這里是一直會(huì)運(yùn)行的線(xiàn)程 acceptCount="1000" 監(jiān)聽(tīng)端口隊(duì)列數(shù) enableLookups="false" 關(guān)閉DNS解析,減少性能損耗 server="None" URIEncoding="UTF-8" />
NIO和BIO還有 NIO2
其實(shí)關(guān)于 NIO 和 BIO 和 AIO 阿粉在之前已經(jīng)完全都說(shuō)過(guò)了,同步阻塞 IO 就是 BIO ,而同步非阻塞IO和異步阻塞IO 就是 NIO ,而異步非阻塞IO就是 AIO 啦,
BIO :同步阻塞IO
NIO :同步非阻塞IO和異步阻塞IO
AIO :這種異步非阻塞 IO 是我們最需要注意的,是從 JDK7 及其以上才會(huì)支持的。
話(huà)不多說(shuō),直接上如何修改,
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/> <Connector connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
網(wǎng)上有人說(shuō),從 Tomcat8 以上就是 NIO 模式了,但是實(shí)際情況好像是沒(méi)有,還是需要自己手動(dòng)去換成 NIO 模式。
關(guān)于 Tomcat的優(yōu)化,阿粉就不再給大家敘述了,給大家再來(lái)說(shuō)說(shuō)這個(gè)關(guān)于 JVM 的優(yōu)化。
JVM
阿粉最開(kāi)始寫(xiě)文章的時(shí)候,就是首先從 JVM 寫(xiě)起來(lái)的,大家可以搜索一下曾經(jīng)阿粉寫(xiě)的關(guān)于 JVM 的內(nèi)容,里面有對(duì) JVM 的完整的介紹,對(duì) FullGC ,YGC 等垃圾收集方式,都做過(guò)介紹,這里阿粉只給大家介紹怎么去通過(guò)修改 Tomcat 的配置,來(lái)達(dá)到,我們對(duì) JVM 的優(yōu)化。
大家都知道,正確的選擇不同的 GC 策略,調(diào)整 JVM、GC 的參數(shù),可以極大的減少由于 GC 工作,而卻這樣會(huì)大大的提高我們程序的運(yùn)行效率。
目錄還是那個(gè)目錄,Tomcat 的根目錄下的 bin 目錄,catalina.bat ,Linux的話(huà),去修改.sh 的文件即可。
找到 JAVA_OPTS 而他就是用來(lái)設(shè)置 JVM 相關(guān)運(yùn)行參數(shù)的變量的,在這里阿粉也給大家說(shuō)一下關(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è)線(xiàn)程的堆棧大小
-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)存頁(yè)的大小不可設(shè)置過(guò)大, 會(huì)影響Perm的大小
-XX:+UseFastAccessorMethods :原始類(lèi)型的快速優(yōu)化
-XX:+UseCMSInitiatingOccupancyOnly :使用手動(dòng)定義初始化定義開(kāi)始CMS收集
到此,相信大家對(duì)“Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
本文標(biāo)題:Tomcat調(diào)優(yōu)和JVM參數(shù)優(yōu)化方法是什么
標(biāo)題網(wǎng)址:http://muchs.cn/article28/iegijp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司、定制網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)