Tomcat 調優方案


Tomcat的默認配置,性能並不是最優的,我們可以通過優化tomcat以此來提高網站的並發能力。提高Tomcat的性能可以分為兩個方向。


服務器資源

服務器所能提供CPU、內存、硬盤的性能對處理能力有決定性影響,所以說服務器性能牛B,Tomcat也不會太差。當然提高服務器的硬件配置,是需要大量RMB的支持的。所以不到萬不得已不會采用這種方式,一般公司會采取下面這種通過優化配置,來提升Tomcat性能的方式。


優化配置

優化配置之前,我們需要配置一個tomcat管理員賬戶,來登錄查看Tomcat控制台提高的各種參數。

在conf/ tomcat-users.xml下添加用戶:

<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename="admin-gui"/> <user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

啟動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的優化配置,你的Tomcat服務器並發量肯定會有大幅度的提升。這只是簡單的配置,后續還會有針對JVM的專項介紹。JVM參數也是影響Tomcat性能的一個重要因素


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM