1. 程式人生 > >CentOS 7.5安裝配置Tomcat詳解(二)

CentOS 7.5安裝配置Tomcat詳解(二)

二、Tomcat調優、開機自啟和日誌切割

1、  編譯安裝opensslaprapr-utiltomcat-native

(1)編譯安裝openssl(下載地址https://www.openssl.org/source/):

# yum -y install openssl-devel

# tar -xf openssl-1.0.2p.tar.gz -C /usr/src

# cd /usr/src/openssl-1.0.2p

# ./config --prefix=/usr/local/openssl -fPIC

# make && make install

(2)編譯安裝

aprApache Portable Runtime,下載地址http://apr.apache.org/download.cgi):

# tar -xf apr-1.6.5.tar.gz -C /usr/src

# cd /usr/src/apr-1.6.5

# vim configure --> 30993行的$RM "$cfgfile"#號註釋

# ./configure --prefix=/usr/local/apr --enable-profile --enable-threads --with-sendfile

# make && make install

# vim /etc/profile.d/apr.sh

export LD_LIBRARY_PATH=/usr/local/apr/lib:$LD_LIBRARY_PATH

# . /etc/profile.d/apr.sh

# echo $LD_LIBRARY_PATH

image.png

(3)編譯安裝apr-util

# yum -y install expat-devel

# tar -xf apr-util-1.6.1.tar.gz -C /usr/src

# cd /usr/src/apr-util-1.6.1

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-openssl=/usr/local/openssl

# make && make install

(4)編譯安裝tomcat-native

# cd /usr/local/tomcat/bin

# tar -zxf tomcat-native.tar.gz

# cd tomcat-native-1.2.17-src/native

# ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/latest --with-ssl=/usr/local/openssl

# make && make install

備註:Tomcat的BIO、NIO和APR模式

  • BIO:blocking I/O,阻塞式I/O操作,表示Tomcat使用的是傳統的Java I/O操作(java.io包及其子包)預設的模式,效能最差,沒有經過任何優化處理和支援。

  • NIO:non-blocking I/OJava SE 1.4及後續版本提供的一種新的I/O操作方式(java.nio包及其子包)Java nio是一個基於緩衝區、並能提供非阻塞I/O操作的Java API。擁有比傳統I/O操作(bio)更好的併發執行效能。

  • APR:Apache Portable Runtime,Apache可移植執行時庫Tomcat將以JNI的形式呼叫Apache HTTP伺服器的核心動態連結庫來處理檔案讀取或網路傳輸操作,從而大大地提高Tomcat對靜態檔案的處理效能。從作業系統級別來解決非同步的IO問題大幅度的提高效能。Tomcat apr也是在Tomcat上執行高併發應用的首選模式。要讓Tomcatapr模式來執行,必須安裝aprnative。

2、  安全方面的配置:# catalina.sh stop  # ps -ef | grep java  # rm -rf /usr/local/tomcat/webapps/examples

3、  JVM效能方面的配置:

# cd /usr/local/tomcat/bin

# cp catalina.sh catalina.sh.bak

# vim catalina.sh,在首行#!/bin/sh下新增如下程式碼

JAVA_OPTS='-server -Xms2048m -Xmx2048m'

備註:記憶體大小按實際情況調整

Ø  -XmxJava Heap最大值,預設值為實體記憶體的1/4

Ø  -XmsJava Heap初始值,ServerJVM最好將-Xms-Xmx設為相同值

4、  HTTP聯結器併發效能方面的配置:

# cd /usr/local/tomcat/conf

# cp server.xml server.xml.bak

# vim server.xml,將如下程式碼修改為

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

-->

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false" minSpareThreads="50" maxThreads="1000" acceptCount="1000" />

備註:Connector中可以使用如下指令

Ø  address:指定聯結器監聽的地址,預設為所有地址,即0.0.0.0

Ø  port:監聽的埠,預設為0

Ø  protocol:聯結器使用的協議為HTTP/1.1,定義AJP協議時通常為AJP/1.3,包括3種模式:BIO(預設採用的模型)、NIO(內建的模型)和APR(呼叫APR庫來實現作業系統級別控制)

Ø  connectionTimeout:等待客戶端傳送請求的超時時間,單位為毫秒,預設為60000,即1分鐘

Ø  redirectPort:如果某聯結器支援的協議是HTTP,當接收客戶端發來的HTTPS請求時,則轉發至此屬性定義的埠

Ø  URIEncoding:可以使Tomcat解析含有中文名檔案的URL

Ø  enableLookups:禁用DNS查詢以獲取客戶端的主機名,預設為true

Ø  minSpareThreads:最小空閒執行緒數,任何情況都會存活的執行緒數,即便超過了最大空閒時間,也不會被回收

Ø  maxThreads:處理請求的最大執行緒數,即最大併發連線數,超過則將請求放入等待佇列中進行排隊,等待空閒執行緒,預設值為200

Ø  acceptCount:設定等待佇列的最大長度,當執行緒數達到maxThreads時,後續請求會被放入一個等待佇列,這個acceptCount就是這個佇列的大小,如果這個佇列也滿了,則返回connection refused(請求被拒絕),預設值為100

5、  開機自啟:

# vim /etc/rc.d/rc.local,末尾新增如下程式碼:

export JAVA_HOME=/usr/java/latest

/usr/local/tomcat/bin/startup.sh

# chmod +x /etc/rc.d/rc.local

6、  調優結果測試:

# catalina.sh configtest

image.png 

# catalina.sh start

# ss -tunlp

image.png

# ps -ef | grep java

image.png

瀏覽器中訪問http://192.168.1.145:8080

image.png

7、  日誌檔案按天切割:

預設情況下,Tomcatcatalina.out日誌檔案是不會像其它日誌一樣,按日期進行分割,而是全部輸出寫入到一個catalina.out

# cd /usr/local/tomcat/logs

# ls -lh

image.png

# tar -zxf cronolog-1.6.2.tar.gz -C /usr/src

# cd /usr/src/cronolog-1.6.2

# ./configure --prefix=/usr/local/cronolog

# make && make install

# vim /usr/local/tomcat/bin/catalina.sh

211CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out修改成:

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out

刪除440touch "$CATALINA_OUT"

453463org.apache.catalina.startup.Bootstrap "[email protected]" start \修改成:

org.apache.catalina.startup.Bootstrap "[email protected]" start 2>&1 \

454464>> "$CATALINA_OUT" 2>&1 "&"修改成:

|/usr/local/cronolog/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

# catalina.sh stop

# catalina.sh configtest

# catalina.sh start

image.png

# ps -ef | grep tomcat

image.png

可以只保留180天內的日誌檔案,每天凌晨1點執行自動清理:# crontab -e

0 1 * * * /bin/find /usr/local/tomcat/logs/ -type f -name "catalina.*.out" -mtime +180 | xargs rm -rf