一、前言

          最近整理了 Tomcat 調(diào)優(yōu)這塊,基本上面試必問,于是就花了點時間去搜集一下 Tomcat
          調(diào)優(yōu)都調(diào)了些什么,先記錄一下調(diào)優(yōu)手段,更多詳細(xì)的原理和實現(xiàn)以后用到時候再來補充記錄,下面就來介紹一下,Tomcat 調(diào)優(yōu)大致分為兩大類。


          1、Tomcat的自身調(diào)優(yōu)
          采用動靜分離節(jié)約 Tomcat 的性能
          調(diào)整 Tomcat 的線程池
          調(diào)整 Tomcat 的連接器
          修改 Tomcat 的運行模式
          禁用 AJP 連接器
          2、JVM的調(diào)優(yōu)
          調(diào)優(yōu)Jvm內(nèi)存

          二、Tomcat 自身調(diào)優(yōu)

          1、采用動靜分離
          靜態(tài)資源如果讓 Tomcat 處理的話 Tomcat 的性能會被損耗很多,所以我們一般都是采用:Nginx+Tomcat 實現(xiàn)動靜分離,讓 Tomcat
          只負(fù)責(zé) jsp 文件的解析工作,Nginx 實現(xiàn)靜態(tài)資源的訪問。
          2、調(diào)優(yōu) Tomcat 線程池
          打開tomcat的serve.xml,配置Executor,相關(guān)參數(shù)說明如下。


          name:給執(zhí)行器(線程池)起一個名字;
          namePrefix:指定線程池中的每一個線程的 name 前綴;
          maxThreads:線程池中最大的線程數(shù)量,假設(shè)請求的數(shù)量超過了 750,這將不是意味著將 maxThreads 屬性值設(shè)置為
          750,它的最好解決方案是使用「Tomcat集群」。也就是說,如果有 1000 請求,兩個 Tomcat 實例設(shè)置 maxThreads = 500,而不在單
          Tomcat 實例的情況下設(shè)置 maxThreads=1000。
          minSpareThreads:線程池中允許空閑的線程數(shù)量(多余的線程都?xì)⑺溃?br>maxIdLeTime:一個線程空閑多久算是一個空閑線程;
          其他的配置其實閱讀官方文檔是最好的「見參考鏈接」。
          3、調(diào)優(yōu) Tomcat 的連接器 Connector
          打開 Tomcat 的 serve.xml,配置 Connector,參數(shù)說明如下。


          executor:指定這個連接器所使用的執(zhí)行器(線程池);


          enableLookups=false:關(guān)閉 DNS 解析,減少性能損耗;
          minProcessors:服務(wù)器啟動時創(chuàng)建的最少線程數(shù);
          maxProcessors:最大可以創(chuàng)建的線程數(shù);
          acceptCount=1000:線程池中的線程都被占用,允許放到隊列中的請求數(shù);
          maxThreads=3000:最大線程數(shù);
          minSpareThreads=20:最小空閑線程數(shù),這里是一直會運行的線程;
          與壓縮有關(guān)系的配置:如果已經(jīng)對代碼進(jìn)行了動靜分離,靜態(tài)頁面和圖片等數(shù)據(jù)就不需要 Tomcat 處理了,那么也就不需要配置在 Tomcat 中配置壓縮了;
          一個完整的配置如下。


          4、通過修改 Tomcat 的運行模式
          BIO
          Tomcat8 以下版本,默認(rèn)使用的就是 BIO「阻塞式IO)」模式。


          對于每一個請求都要創(chuàng)建一個線程來進(jìn)行處理,不適合高并發(fā)。
          NIO
          Tomcat8 以上版本,默認(rèn)使用的就是NIO模式「非阻塞式 IO」。
          APR
          全稱 Apache Portable Runtime,是Tomcat生產(chǎn)環(huán)境運行的首選方式,如果操作系統(tǒng)未安裝 APR 或者 APR 路徑未指到
          Tomcat 默認(rèn)可識別的路徑,則 APR 模式無法啟動,自動切換啟動 NIO 模式。所以必須要安裝 APR 和 Native,直接啟動就支持
          APR,APR是從操作系統(tǒng)級別解決異步 IO 問題,APR 的本質(zhì)就是使用 JNI 技術(shù)調(diào)用操作系統(tǒng)底層的 IO 接口,所以需要提前安裝所需要的依賴
          提升 Tomcat 對靜態(tài)文件的處理性能,當(dāng)然也可以采用動靜分離。
          5、禁用 AJP 連接器
          AJP的全稱 Apache JServer Protocol,使用 Nginx+Tomca t的架構(gòu),所以用不著 AJP 協(xié)議,所以把AJP連接器禁用。


          三、JVM 調(diào)優(yōu)

          Tomcat 是運行在 JVM 上的,所以對 JVM 的調(diào)優(yōu)也是非常有必要的。
          歡迎大家關(guān)注我的公種浩【程序員追風(fēng)】,文章都會在里面更新,整理的資料也會放在里面。
          找到 catalina.sh;


          添加;


          參數(shù)設(shè)置;
          JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8-server -Xms1024m
          -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XXermSize=512m
          -XX:MaxPermSize=512m -XX:+DisableExplicitGC"
          調(diào)整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間內(nèi)最大化處理客戶的請求。
          最后
          歡迎大家一起交流,喜歡文章記得點個贊喲,感謝支持!

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                午夜无码av | 久操电影网| 久久精品国产乱子伦多人ol集 | 国产人妖网站 | 成人做爰无码A片韩国电影网斗生 |