【 Tomcat 】tomcat8.0 基本參數調優配置


1、優化內核及TCP連接:

fs.file-max = 655350  # 系統文件描述符總量

net.ipv4.ip_local_port_range = 1024 65535  # 打開端口范圍

net.ipv4.tcp_max_tw_buckets = 2000  # 設置tcp連接時TIME_WAIT個數
net.ipv4.tcp_tw_recycle = 1  # 開啟快速tcp TIME_WAIT快速回收
net.ipv4.tcp_tw_reuse = 1  # 開啟TIME_WAIT重用
net.ipv4.tcp_syncookies = 1  # 開啟SYN cookies 當出現syn等待溢出,啟用cookies來處理,可防范少量的syn攻擊
net.ipv4.tcp_syn_retries = 2  # 對於一個新建的tcp連接,內核要發送幾個SYN連接請求才決定放棄
net.ipv4.tcp_synack_retries = 2  # 這里是三次握手的第二次連接,服務器端發送syn+ack響應 這里決定內核發送次數
net.ipv4.tcp_keepalive_time = 1200  # tcp的長連接,這里注意:tcp的長連接與HTTP的長連接不同
net.ipv4.tcp_fin_timeout = 15    # 設置保持在FIN_WAIT_2狀態的時間
net.ipv4.tcp_max_syn_backlog = 20000  # tcp半連接最大限制數
net.core.somaxconn = 65535  # 定義一個監聽最大的隊列數
net.core.netdev_max_backlog = 65535  # 當網絡接口比內核處理數據包速度快時,允許送到隊列數據包的最大數目

保存退出
[root@cloud ~]# sysctl -p   # 添加生效

2、修改Tomcat Connector運行模式為apr

  Tomcat Connector有三種運行模式:

    bio:阻塞IO bio是三種運行模式中性能最低第一種。

    nio:是一個基於緩沖區,並能提供非阻塞I/O操作的JAVA API 因此NIO也成為非阻塞I/O,比bio擁有更好的並發性能。

    apr:調用httpd核心鏈接庫來讀取或文件傳輸,從而提高tomat對靜態文件的處理性能。Tomcat APR模式也是Tomcat在高並發下的首選運行模式:

[root@server3 src]# java -version    # 請確保JDK版本的正確性
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
# 安裝apr、apr-util、tomcat-native.tar.gz [root@server3 src]# wget http:
//apache.fayea.com//apr/apr-1.5.2.tar.gz [root@server3 src]# wget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz [root@server3 apr-1.5.2]# cd apr-1.5.2 [root@server3 apr-1.5.2]# vim configure #查找 $RM "$cfgfile" 這個地方,用#注釋掉,然后就可以了 [root@server3 apr-1.5.2]# ./configure --prefix=/usr/local/apr [root@server3 apr-1.5.2]# make && make install [root@server3 apr-1.5.2]# cd .. [root@server3 src]# tar xf apr-util-1.5.4.tar.gz [root@server3 src]# cd apr-util-1.5.4 [root@server3 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ [root@server3 apr-util-1.5.4]# make && make install [root@server3 apr-util-1.5.4]# ll /usr/local/apr* /usr/local/apr: total 16 drwxr-xr-x. 2 root root 4096 Apr 24 08:20 bin/ drwxr-xr-x. 2 root root 4096 Apr 24 08:20 build-1/ drwxr-xr-x. 3 root root 4096 Apr 24 08:20 include/ drwxr-xr-x. 3 root root 4096 Apr 24 08:20 lib/ /usr/local/apr-util: total 12 drwxr-xr-x. 2 root root 4096 Apr 24 08:23 bin/ drwxr-xr-x. 3 root root 4096 Apr 24 08:22 include/ drwxr-xr-x. 3 root root 4096 Apr 24 08:23 lib/ [root@server3 apr-util-1.5.4]# cp -a /usr/local/tomcat8.0/bin/tomcat-native.tar.gz /usr/local/src/ [root@server3 apr-util-1.5.4]# cd !$ cd /usr/local/src/ [root@server3 src]# tar xf tomcat-native.tar.gz [root@server3 src]# cd tomcat-native tomcat-native-1.2.5-src/ tomcat-native.tar.gz [root@server3 src]# cd tomcat-native-1.2.5-src/ [root@server3 tomcat-native-1.2.5-src]# cd native/ [root@server3 native]# ./configure --prefix=/usr/local/apr --with-java-home=/usr/local/jdk1.8/ [root@server3 native]# make && make install [root@server3 native]# vim /etc/profile.d/apr.sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib :wq [root@server3 native]# source /etc/profile.d/apr.sh [root@server3 bin]# sh shutdown.sh [root@server3 bin]# sh startup.sh [root@server3 bin]# tail ../logs/catalina.out 24-Apr-2016 08:42:20.319 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/ROOT has finished in 39 ms 24-Apr-2016 08:42:20.320 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/examples 24-Apr-2016 08:42:20.713 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/examples has finished in 393 ms 24-Apr-2016 08:42:20.717 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/manager 24-Apr-2016 08:42:20.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/manager has finished in 82 ms 24-Apr-2016 08:42:20.799 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/tomcat8.0/webapps/docs 24-Apr-2016 08:42:20.835 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/tomcat8.0/webapps/docs has finished in 36 ms 24-Apr-2016 08:42:20.843 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-apr-8080"]  # 通過查看啟動日志,tomcat運行模式已經切換到APR。 24-Apr-2016 08:42:20.872 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-apr-8009"] 24-Apr-2016 08:42:20.877 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1090 ms

三、Tomcat內存優化:

  Tomcat內存優化主要是對tomcat啟動參數優化,可以修改catalina.sh中設置JAVA_OPTS參數

    1.JAVA_OPTS參數說明

    -server  啟用jdk 的 server 版;  
    -Xms    java虛擬機初始化時的最小內存;  
    -Xmx   java虛擬機可使用的最大內存;  

配置如下:

[root@server3 bin]# vim /usr/local/tomcat8.0/bin/catalina.sh
 97行 JAVA_OPTS='-server -Xms1024m -Xmx1024m'

四、Tomcat並發優化

  1、Tomcat配置文件server.xml中<Connector .../> 

  2、參數說明:

minProcessors:最小空閑連接線程數,用於提高系統處理性能,默認值為 10
maxProcessors:最大連接線程數,即:並發處理的最大請求數,默認值為 75
acceptCount:允許的最大連接數,應大於等於 maxProcessors ,默認值為 100
enableLookups:是否反查域名,取值為: truefalse 。為了提高處理能力,應設置為 false
connectionTimeout:網絡連接超時,單位:毫秒。設置為 0 表示永不超時,這樣設置有隱患的。通常可設置為 30000 毫秒。
其中和最大連接數相關的參數為maxProcessors 和 acceptCount 。如果要加大並發連接數,應同時加大這兩個參數。
web server允許的最大連接數還受制於操作系統的內核參數設置,通常 Windows 是 2000 個左右, Linux 是 1000 個左右。 

maxThreads  客戶請求最大線程數
minSpareThreads    Tomcat初始化時創建的 socket 線程數
maxSpareThreads   Tomcat連接器的最大空閑 socket 線程數
enableLookups      若設為true, 則支持域名解析,可把 ip 地址解析為主機名
redirectPort        在需要基於安全通道的場合,把客戶請求轉發到基於SSL 的 redirectPort 端口
acceptAccount       監聽端口隊列最大數,滿了之后客戶請求會被拒絕(不能小於maxSpareThreads  )
connectionTimeout   連接超時
minProcessors         服務器創建時的最小處理線程數
maxProcessors        服務器同時最大處理線程數
URIEncoding    URL統一編碼

配置如下:

 69     <Connector port="8080" protocol="HTTP/1.1"
 70                maxThreads="1000"
 71                minProcessors="100"
 72                maxProcessors="1000"
 73                minSpareThreads="100"
 74                maxSpareThreads="1000"
 75                enableLookups="false"
 76                URIEncoding="utf-8"
 77                acceptCount="1000"
 78                connectionTimeout="20000"
 79                disableUploadTimeout="ture"
 80                redirectPort="8443" />

tomcat對內存及並發的優化就這些。可根據具體的資源進行調整。重啟tomcat,觀察日志有無報錯。


免責聲明!

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



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