您好,登錄后才能下訂單哦!
一、前言
最近整理了 Tomcat 調優這塊,基本上面試必問,于是就花了點時間去搜集一下 Tomcat 調優都調了些什么,先記錄一下調優手段,更多詳細的原理和實現以后用到時候再來補充記錄,下面就來介紹一下,Tomcat 調優大致分為兩大類。
1、Tomcat的自身調優
采用動靜分離節約 Tomcat 的性能
調整 Tomcat 的線程池
調整 Tomcat 的連接器
修改 Tomcat 的運行模式
禁用 AJP 連接器
2、JVM的調優
調優Jvm內存
二、Tomcat 自身調優
1、采用動靜分離
靜態資源如果讓 Tomcat 處理的話 Tomcat 的性能會被損耗很多,所以我們一般都是采用:Nginx+Tomcat 實現動靜分離,讓 Tomcat 只負責 jsp 文件的解析工作,Nginx 實現靜態資源的訪問。
2、調優 Tomcat 線程池
打開tomcat的serve.xml,配置Executor,相關參數說明如下。
name:給執行器(線程池)起一個名字;
namePrefix:指定線程池中的每一個線程的 name 前綴;
maxThreads:線程池中最大的線程數量,假設請求的數量超過了 750,這將不是意味著將 maxThreads 屬性值設置為 750,它的最好解決方案是使用「Tomcat集群」。也就是說,如果有 1000 請求,兩個 Tomcat 實例設置 maxThreads = 500,而不在單 Tomcat 實例的情況下設置 maxThreads=1000。
minSpareThreads:線程池中允許空閑的線程數量(多余的線程都殺死);
maxIdLeTime:一個線程空閑多久算是一個空閑線程;
其他的配置其實閱讀官方文檔是最好的「見參考鏈接」。
3、調優 Tomcat 的連接器 Connector
打開 Tomcat 的 serve.xml,配置 Connector,參數說明如下。
executor:指定這個連接器所使用的執行器(線程池);
enableLookups=false:關閉 DNS 解析,減少性能損耗;
minProcessors:服務器啟動時創建的最少線程數;
maxProcessors:最大可以創建的線程數;
acceptCount=1000:線程池中的線程都被占用,允許放到隊列中的請求數;
maxThreads=3000:最大線程數;
minSpareThreads=20:最小空閑線程數,這里是一直會運行的線程;
與壓縮有關系的配置:如果已經對代碼進行了動靜分離,靜態頁面和圖片等數據就不需要 Tomcat 處理了,那么也就不需要配置在 Tomcat 中配置壓縮了;
一個完整的配置如下。
4、通過修改 Tomcat 的運行模式
BIO
Tomcat8 以下版本,默認使用的就是 BIO「阻塞式IO)」模式。
對于每一個請求都要創建一個線程來進行處理,不適合高并發。
NIO
Tomcat8 以上版本,默認使用的就是NIO模式「非阻塞式 IO」。
APR
全稱 Apache Portable Runtime,是Tomcat生產環境運行的首選方式,如果操作系統未安裝 APR 或者 APR 路徑未指到 Tomcat 默認可識別的路徑,則 APR 模式無法啟動,自動切換啟動 NIO 模式。所以必須要安裝 APR 和 Native,直接啟動就支持 APR,APR是從操作系統級別解決異步 IO 問題,APR 的本質就是使用 JNI 技術調用操作系統底層的 IO 接口,所以需要提前安裝所需要的依賴
提升 Tomcat 對靜態文件的處理性能,當然也可以采用動靜分離。
5、禁用 AJP 連接器
AJP的全稱 Apache JServer Protocol,使用 Nginx+Tomca t的架構,所以用不著 AJP 協議,所以把AJP連接器禁用。
三、JVM 調優
Tomcat 是運行在 JVM 上的,所以對 JVM 的調優也是非常有必要的。
歡迎大家關注我的公種浩【程序員追風】,文章都會在里面更新,整理的資料也會放在里面。
找到 catalina.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"
調整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間內最大化處理客戶的請求。
最后
歡迎大家一起交流,喜歡文章記得點個贊喲,感謝支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。