Tomcat8優化--配置優化


Tomcat優化

  Tomcat服務器在JavaEE項目中使用率非常高,所以在生產環境對Tomcat的優化也變得非常重要了。
 對於Tomcat的優化,主要是從2個方面入手,一是,Tomcat自身的配置,另一個是Tomcat所運行的jvm虛擬機的調優。

部署安裝tomcat8

下載並安裝

修改Tomcat的管理用戶配置

進入Tomcat的conf目錄下

cd apache-tomcat-8.5.34/conf/

修改配置文件

vim 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"/>

#如果是tomcat7,配置了tomcat用戶就可以登錄系統了,但是tomcat8中不行,還需要修改 另一個配置文件,否則訪問不了,提示403

修改xml文件

vim webapps/manager/META-INF/context.xml

將value的內容注釋掉

<Context antiResourceLocking="false" privileged="true" >:
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\. (?:Boolean|Integer|Long|Number|String)、
|org\.apache\.catalina\.filters\.Cs rfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>

啟動Tomcat

進入Tomcat中的bin目錄下

cd /cat/apache-tomcat-8.5.34/bin/

啟動

./startup.sh

打開瀏覽器進行測試訪問

http://192.168.168.40:8080/

點擊Server   Status,輸入用戶名tomcat,輸入密碼tomcat

 成功之后即可看見如下頁面

 

Tomcat配置優化

禁用AJP連接

在服務狀態頁面中可以看到,默認狀態下會啟用AJP服務,並且占用8009端口

 什么是AJP呢

AJP(Apache JServer Protocol)

AJPv13協議是面向包的,WEB服務器和Servlet容器通過TCP連接來交互;為了節省SOCKET創建的昂貴代價,WEB服務器會嘗試維護一個永久TCP連接到servlet容器,並且在多個請求和響應周期過程會重用連接。

 我們一般是使用nginx+tomcat的架構,所以用不着AJP協議,所以把AJP連接器禁用;

修改conf下的server.xml文件,將AJP服務器禁用掉即可;

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

重啟tomcat,查看效果

 可以看到AJP服務以及不存在了

執行器(線程池)

在tomcat中每一個用戶請求都是一個線程,所以可以使用線程池提高性能;

修改server.xml文件

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>

參數說明

maxThreads:最大並發數,默認設置 150,一般建議在 500 ~ 1000,根據硬件設施和業務來判斷

minSpareThreads:tomcat初始化時創建的線程數,默認是4

prestartminSpareThreads:在tomcat初始化的時候就初始化minSpareThreads的參數值,如果不等於true,minSpareThreads的值就沒啥效果了

maxQueueSize:最大的等待隊列數,超過則拒絕請求

在Connector中設置executor屬性指向上面的執行器

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

保存退出,重啟tomcat,查看效果

三種運行模式

tomcat的運行模式有3種

bio:默認的模式,性能非常低,沒有經過任何優化處理和支持;

nio:是java SE1.4及后續版本提供的一種新的I/O操作方式。java nio是一個基於緩沖區,並能提供非阻塞I/O操作的java API,因此nio也被看成是non-blocking I/O的縮寫。它擁有比傳統I/O操作(bio)更好的並發運行性能;

apr:安裝起來最困難,但是從操作系統級別來解決異步的IO問題,大幅度的提高性能;

推薦使用nio,不過,在tomcat8中有最新的nio2,速度更快,建議使用nio2;

設置nio2:

<Connector executor="tomcatThreadPool"
   port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
   connectionTimeout="20000"
   redirectPort="8443" />

可以看到已設置nio2  

 

 

 

  

  

  

  

  

  

  

  

  

  

 
 


免責聲明!

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



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