二、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中可以使用如下指令

Ø  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

CentOS 7.5安装配置Tomcat详解(二)_第1张图片 

# catalina.sh start

# ss -tunlp

CentOS 7.5安装配置Tomcat详解(二)_第2张图片

# ps -ef | grep java

image.png

浏览器中访问http://192.168.1.145:8080

CentOS 7.5安装配置Tomcat详解(二)_第3张图片

7、  日志文件按天切割:

默认情况下,Tomcatcatalina.out日志文件是不会像其它日志一样,按日期进行分割,而是全部输出写入到一个catalina.out

# cd /usr/local/tomcat/logs

# ls -lh

CentOS 7.5安装配置Tomcat详解(二)_第4张图片

# 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 "$@" start \修改成:

org.apache.catalina.startup.Bootstrap "$@" 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

CentOS 7.5安装配置Tomcat详解(二)_第5张图片

# ps -ef | grep tomcat

CentOS 7.5安装配置Tomcat详解(二)_第6张图片

可以只保留180天内的日志文件,每天凌晨1点执行自动清理:# crontab -e

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