更改 tomcat9 運行模式為 Apr


Tomcat支持三種接收請求的處理方式:BIO、NIO、APR 。

1. BIO由於每個請求都要創建一個線程來處理,線程開銷比較大,不能再高並發的場景,性能也是最低的。
2. NIO是一個基於緩沖區、並能提供非阻塞I/O操作的Java API,比傳統的bio更好的並發性能。
3. APR(Apache Portable Run-time libraries)簡單理解,就是從操作系統級別解決異步IO問題,大幅度的提高服務器的處理和響應性能, 也是Tomcat運行高並發應用的首選模式。

所需軟件的下載地址

https://mirrors.cnnic.cn/apache/apr/
tomcat-native在tomcat的bin下
* apr
* apr-iconv
* apr-util
* tomcat-native

安裝依賴

yum install -y apr-devel openssl-devel gcc make expat-devel libtool 

安裝軟件

cd /usr/local/src
wget https://mirrors.cnnic.cn/apache/apr/apr-1.6.5.tar.gz
tar xf apr-1.6.5.tar.gz
cd apr-1.6.5/
./configure --prefix=/usr/local/apr
make && make install
​
cd /usr/local/src
wget https://mirrors.cnnic.cn/apache/apr/apr-iconv-1.2.2.tar.gz
tar xf apr-iconv-1.2.2.tar.gz
cd apr-iconv-1.2.2/
./configure --with-apr=/usr/local/apr --prefix=/usr/local/apr-iconv
make && make install
​
cd /usr/local/src
wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
tar xf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv
make && make install
​
cd /srv/tomcat-8080/bin/
tar xf tomcat-native.tar.gz
cd /srv/tomcat-8080/bin/tomcat-native-1.2.23-src/native
./configure --with-apr=/usr/local/apr --with-java-home=/srv/jdk
make && make installecho -e 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib\nexport LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib' >> /etc/profile
​
source /etc/profile

修改配置

vim /srv/tomcat-8080/conf/server.xml
​
<Executor name="tomcatThreadPool" 
         namePrefix="catalina-exec-"
         maxThreads="300" 
         minSpareThreads="30"/><Connector executor="tomcatThreadPool" 
              port="8080" 
              protocol="org.apache.coyote.http11.Http11AprProtocol"
              connectionTimeout="20000"
              redirectPort="8443"
              acceptCount="900"
              disableUploadTimeout="true"
              URIEncoding="UTF-8"
              enableLookups="false"
              compression="on"
              compressionMinSize="1024"
              /><!-- Define an AJP 1.3 Connector on port 8009 --> ##注釋掉下面那行,如果不用apache
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

測試

/srv/tomcat-8080/bin/catalina.sh run
14-Oct-2019 14:46:05.122 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]

:如果非root用戶啟動失敗,把apr環境變量在當前用戶的.bash_profile中寫一份

配置說明

Executor參數說明

name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認值:None;
namePrefix:在JVM上,每個運行線程都可以有一個name 字符串。這一屬性為線程池中每個線程的name字符串設置了一個前綴,Tomcat將把線程號追加到這一前綴的后面。默認值:catalina-exec-;
maxThreads:該線程池可以容納的最大線程數。默認值:150;
maxIdleTime:在Tomcat關閉一個空閑線程之前,允許空閑線程持續的時間(以毫秒為單位)。只有當前活躍的線程數大於minSpareThread的值,才會關閉空閑線程。默認值:60000(一分鍾)。
minSpareThreads:Tomcat應該始終打開的最小不活躍線程數。默認值:4。
threadPriority:線程的等級。默認是Thread.NORM_PRIORITY

Connector參數說明

maxThreads :Tomcat 使用線程來處理接收的每個請求,這個值表示 Tomcat 可創建的最大的線程數,默認值是 200
minSpareThreads:最小空閑線程數,Tomcat 啟動時的初始化的線程數,表示即使沒有人使用也開這么多空線程等待,默認值是 10。
maxSpareThreads:最大備用線程數,一旦創建的線程超過這個值,Tomcat 就會關閉不再需要的 socket 線程。
​
上邊配置的參數,最大線程 500(一般服務器足以),要根據自己的實際情況合理設置,設置越大會耗費內存和 CPU,因為 CPU 疲於線程上下文切換,沒有精力提供請求服務了,最小空閑線程數 20,線程最大空閑時間 60 秒,
當然允許的最大線程連接數還受制於操作系統的內核參數設置,設置多大要根據自己的需求與環境。當然線程可以配置在“tomcatThreadPool”中,也可以直接配置在“Connector”中,但不可以重復配置。 ​ URIEncoding:指定 Tomcat 容器的 URL 編碼格式,語言編碼格式這塊倒不如其它 WEB 服務器軟件配置方便,需要分別指定。 connnectionTimeout: 網絡連接超時,單位:毫秒,設置為
0 表示永不超時,這樣設置有隱患的。通常可設置為 30000 毫秒,可根據檢測實際情況,適當修改。 enableLookups: 是否反查域名,以返回遠程主機的主機名,取值為:truefalse,如果設置為false,則直接返回IP地址,為了提高處理能力,應設置為 false。 disableUploadTimeout:上傳時是否使用超時機制。 connectionUploadTimeout:上傳超時時間,畢竟文件上傳可能需要消耗更多的時間,這個根據你自己的業務需要自己調,以使Servlet有較長的時間來完成它的執行,需要與上一個參數一起配合使用才會生效。 acceptCount:指定當所有可以使用的處理請求的線程數都被使用時,可傳入連接請求的最大隊列長度,超過這個數的請求將不予處理,默認為100個。 keepAliveTimeout:長連接最大保持時間(毫秒),表示在下次請求過來之前,Tomcat 保持該連接多久,默認是使用 connectionTimeout 時間,-1 為不限制超時。 maxKeepAliveRequests:表示在服務器關閉之前,該連接最大支持的請求數。超過該請求數的連接也將被關閉,1表示禁用,-1表示不限制個數,默認100個,一般設置在100~200之間。 compression:是否對響應的數據進行 GZIP 壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進行壓縮,默認值為off,壓縮數據后可以有效的減少頁面的大小,一般可以減小1/3左右,節省帶寬。 compressionMinSize:表示壓縮響應的最小值,只有當響應報文大小大於這個值的時候才會對報文進行壓縮,如果開啟了壓縮功能,默認值就是2048。 compressableMimeType:壓縮類型,指定對哪些類型的文件進行數據壓縮。 noCompressionUserAgents="gozilla, traviata": 對於以下的瀏覽器,不啟用壓縮。 如果已經對代碼進行了動靜分離,靜態頁面和圖片等數據就不需要 Tomcat 處理了,那么也就不需要配置在 Tomcat 中配置壓縮了。

 


免責聲明!

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



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