您好,登錄后才能下訂單哦!
這篇文章主要介紹“Tomcat的運行和調優方法”,在日常操作中,相信很多人在Tomcat的運行和調優方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Tomcat的運行和調優方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Tomcat的默認配置,性能并不是最優的,我們可以通過優化tomcat以此來提高網站的并發能力。提高Tomcat的性能可以分為兩個方向。
服務器資源
服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響,所以說服務器性能牛B,Tomcat也不會太差。當然提高服務器的硬件配置,是需要大量RMB的支持的。所以不到萬不得已不會采用這種方式,一般公司會采取下面這種通過優化配置,來提升Tomcat性能的方式。
優化配置
優化配置之前,我們需要配置一個tomcat管理員賬戶,來登錄查看Tomcat控制臺提高的各種參數。
在conf/ tomcat-users.xml下添加用戶:
啟動tomcat,登錄查看信息:http://127.0.0.1:8080/
tomcat的3種運行模式
tomcat的運行模式有3種:
bio:
默認的模式,性能非常低下,沒有經過任何優化處理和支持.
nio:
nio(new I/O),是Java SE 1.4及后續版本提供的一種新的I/O操作方式(即java.nio包及其子包)。Java nio是一個基于緩沖區、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的并發運行性能。
apr:
安裝起來最困難,但是從操作系統級別來解決異步的IO問題,大幅度的提高性能.
啟動NIO模式
修改server.xml里的Connector節點,修改protocol為org.apache.coyote.http11.Http11NioProtocol
執行器優化(線程池)
在tomcat中每一個用戶請求都是一個線程,所以可以使用線程池提高性能。
開啟并且使用
配置:
在Connector中指定使用共享線程池
查看Tomcat控制臺
Executor重要參數說明:
name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認值:None;
namePrefix:在JVM上,每個運行線程都可以有一個name 字符串。這一屬性為線程池中每個線程的name字符串設置了一個前綴,Tomcat將把線程號追加到這一前綴的后面。默認值:tomcat-exec-;
maxThreads:該線程池可以容納的最大線程數。默認值:200;
maxIdleTime:在Tomcat關閉一個空閑線程之前,允許空閑線程持續的時間(以毫秒為單位)。只有當前活躍的線程數大于minSpareThread的值,才會關閉空閑線程。默認值:60000(一分鐘)。
minSpareThreads:Tomcat應該始終打開的最小不活躍線程數。默認值:25。
threadPriority:線程的等級。默認是Thread.NORM_PRIORITY
Connector重要參數說明:
executor:表示使用該參數值對應的線程池;
minProcessors:服務器啟動時創建的處理請求的線程數;
maxProcessors:最大可以創建的處理請求的線程數;
acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
參數最佳實踐
禁用AJP連接器
AJP(Apache JServer Protocol)
AJPv13協議是面向包的。WEB服務器和Servlet容器通過TCP連接來交互;為了節省SOCKET創建的昂貴代價,WEB服務器會嘗試維護一個永久TCP連接到servlet容器,并且在多個請求和響應周期過程會重用連接。
我們一般是使用Nginx+tomcat的架構,所以用不著AJP協議,所以把AJP連接器禁用。
在管理界面中看不到ajp了:
到此,關于“Tomcat的運行和調優方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。