一、Tomcat
Tomcat Connector(Tomcat连接器)有三种运行模式:bio、nio、apr。
1、BIO模式
阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即java.io包及其子包)。Tomcat7以下版本默认以BIO模式运行。
由于每个请求都要创建一个线程来处理,线程开销较大,并且也不能处理高并发的场景。是三种模式中性能最低的。
BIO模式启动tomcat看到的日志内容如下:
2、NIO模式
NIO模式是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。
NIO模式是一个基于缓冲区,并能提供非阻塞I/O操作的Java API,拥有比BIO更好的并发运行性能。
Tomcat以NIO模式来运行操作很简单,只需要在Tomcat安装目录/conf/server.xml文件中将如下配置进行修改。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
Tomcat8以上版本,默认采用的模式就是NIO模式。无需做额外配置。
启动信息如下:
3、APR模式
3.1 简介
APR,Apache Portable Run-time libraries。简单来说,就是从操作系统层面解决异步IO问题,从而提高服务器的处理和响应。同时,也是Tomcat运行高并发应用的**首选模式**。
APR模式,可以提供超强的可伸缩性和性能,更好地集成本地服务器技术。APR是一个高可移植库,也是是Apache HTTP Server2.x的核心。
要启用这种模式,需要以下依赖库的支持:
-
APR 1.2+ development headers (libapr1-dev package)
-
OpenSSL 0.9.7+ development headers (libssl-dev package)
-
JNI headers from Java compatible JDK 1.4+
-
GNU development environment (gcc, make)
可以用rpm -qa | grep openssl检查本机安装的依赖库版本是否大于或等于apr要求的版本。
APR模式启动信息如下:
3.2 用途
APR用途,包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理(共享内存,NT管道和UNIXsockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,从而使JAVA作为一个具有高性能的WEB服务器平台,而不是简单的容器。
3.3 APR模式与Tomcat Native的关系
在直接使用Tomcat做WEB服务器的情况下,可以使用Tomcat Native来提高其性能,主要是Tomcat在使用JN方式读取文件以及进行网络传输的时候。可以很大地提升Tomcat对静态文件的处理性能,同时如果使用了HTTPS方式传输的话,也可以提升SSL的处理性能。
二、修改apr模式
apr模式本质是使用JNI技术调用操作系统IO接口,需要用到相关API的头文件。
1、下载APR组件依赖
1.1 下载APR的相关依赖包。
下载地址: http://apr.apache.org/download.cgi
1.2 上传服务器
将下载的依赖包文件通过Xftp等文件传输工具上传到服务器。
这里我将文件放在了/home目录下。
1.3 解压APR包
# tar -zxvf apr-1.7.0.tar.gz
# tar -zxvf apr-util-1.6.1.tar.gz
# tar -zxvf apr-iconv-1.2.2.tar.gz
2、下载Tomcat-native
2.1 官方下载Tomcat-native
下载地址:https://tomcat.apache.org/download-native.cgi
在这里插入图片描述
2.2 上传服务器
将下载的文件通过Xftp等文件传输工具上传到服务器。
这里我将文件放在了/home目录下。
2.3 解压Tomcat-native包
# tar -zxvf tomcat-native-1.2.14-src.tar.gz
3、安装APR组件和Tomcat-native组件
3.1 安装相关工具包
# yum -y install cmake gcc expat-devel
3.2 安装apr
# cd /home/apr-1.7.0
# ./configure --prefix=/usr/local/apr
# make && make install
3.3 安装apr-iconv
# cd /home/apr-iconv-1.2.2
# ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/
# make && make install
3.4 安装apr-util
# cd /home/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
3.5 安装Tomcat-native
# cd /home/tomcat-native-1.2.14-src/native/
# ./configure --with-apr=/usr/local/apr
# make && make install
4、设置环境变量
4.1 添加apr path
方式一:编辑/etc/profile文件
# vi /etc/profile
在文件末尾添加apr path,具体内容如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
ESC—>:wq! 保存并退出编辑。
方式二:使用echo命令将信息写入/etc/profile文件。
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib' >> /etc/profile
4.2 profile文件立即生效
# source /etc/profile
5、修改Tomcat的server.xml配置文件
server.xml文件的路径:${Tomcat}/conf/server.xml
5.1 修改protocol值
# vi server.xml
找到原来的内容
<Connector port="8080" protocol="HTTP/1.1"
改为如下内容
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
5.2 修改SSLEngine
# vi server.xml
找到如下内容
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
将SSLEngine值改为off
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
这里将SSLEngine的值改为off是为了解决启动过程中的报错问题:org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Failed to initialize the SSLEngine。
6、启动tomcat验证
6.1 启动Tomcat服务
# cd /home/apache-tomcat-9.0.50/bin
# ./startup.sh
6.2 查看Tomcat日志
# tail -500f ../logs/catalina.out
日志中显示“http-apr-8080”内容,即Tomcat采用APR模式启动。
三、Tomcat设置成系统服务且开机自启动
1、Tomcat配置成系统服务
1.1 /etc/init.d/ 目录
/etc/init.d/目录,存放一系列系统服务的管理(启动与停止)脚本。
用service命令可执行/etc/init.d/目录中相应的服务脚本。
/etc/init.d/目录,实际上是指向/etc/rc.d/init.d/的一个软链接。
1.2 编辑脚本文件
在/etc/init.d/目录下,创建服务tomcat。
# vi /etc/init.d/tomcat
脚本内容如下:
#!/bin/sh
# description: Tomcat9 start stop restart 描述
# processname:tomcat9
# chkconfig:234 20 80 第一个参数是服务的运行级(Linux的运行级为0-6) 第二个参数是启动优先级 0-99之间的数 第三个参数是停止优先级 0-99之间的数
# 设置环境变量
export CATALINA_HOME=/home/apache-tomcat-9.0.50
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib #读取apr path
TOMCAT=/home/apache-tomcat-9.0.50
###
tomcat_status(){
tomcat_pid=`ps -ef|grep java|grep /home/apache-tomcat-9.0.50|awk '{print $2}'`
if [ -n "$tomcat_pid" ]
then
echo "apache-tomcat-9.0.50(pid $tomcat_pid) 正在运行..."
else
echo 'apache-tomcat-9.0.50 未运行'
fi
}
start_tomcat(){
echo "Starting tomcat"
${TOMCAT}/bin/catalina.sh start &
}
stop_tomcat(){
echo "Stop tomcat"
${TOMCAT}/bin/catalina.sh stop
}
case "$1" in
start)
start_tomcat
;;
stop)
stop_tomcat
;;
restart)
echo "Stop tomcat"
stop_tomcat
sleep 10
start_tomcat
;;
status)
tomcat_status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
exit
1.3 启动服务
# service tomcat start
1.4 查看日志
# tail -500f /home/apache-tomcat-9.0.50/logs/catalina.out
)]
1.5 其他操作服务的命令
1.5.1 关闭服务
# service tomcat stop
1.5.2 查看服务状态
# service tomcat status
1.5.3 服务帮助
# service tomcat *
2、服务设置为开机自启动
Linux下tomcat开机自动启动的两种方法:一种是修改系统文件,这种方式比较简单;另一种shell脚本方式,这种是复杂且专业的,一般推荐这种方式。
2.1 修改系统文件
2.1.1 编辑/etc/rc.d/rc.local 文件
# vi /etc/rc.d/rc.local
文件末尾添加如下内容
export JAVA_HOME= /usr/local/jdk1.8.0_291
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
/home/apache-tomcat-9.0.50/bin/catalina.sh start
2.1.2 修改rc.local文件为可执行
# chomod +x /etc/rc.d/rc.local
2.2 shell脚本(推荐)
2.2.1 编辑Tomcat脚本
【1、Tomcat配置成系统服务】已完成,此步骤忽略。
2.2.2 添加Tomcat服务的管理
# chkconfig --add tomcat
2.2.3 设置Tomcat服务自启动
# chkconfig tomcat on
2.2.4 查看Tomcat的启动状态
# chkconfig --list | grep tomcat
也可以使用命令# chkconfig --list tomcat
2.3 重启服务器
# reboot
2.4 验证Tomcat是否开机自启动
查看Tomcat的日志,确认Tomcat是否启动。
# tail -500f /home/apache-tomcat-9.0.50/logs/catalina.out