0%

Tomcat优化

Tomcat运行模式

Tomcat的运行模式有3种。

bio模式

bio(blocking I/O),阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景。

nio模式

nio是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包),基于缓冲区、并能提供非阻塞I/O操作的Java API实现,比传统的I/O处理方式(bio)有更高的并发运行性能。是Tomcat8的默认运行模式。

apr模式

apr(Apache Portable Runtime/Apache可移植运行库)是Apache HTTP服务器的支持库。从操作系统级别解决异步I/O问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式。要tomcat支持apr,必须安装apr和native,这样tomcat才可以利用apache的apr接口,使用操作系统的部分本地操作,从而提升性能。

Tomcat APR

安装APR

1
# yum -y install apr apr-devel gcc gcc-c++ openssl-devel openssl  

解压Tomcat Native包,编译安装

此包在apache-tomcat-8.5.37/bin目录下

1
2
3
4
# tar zxvf tomcat-native.tar.gz
# cd tomcat-native-1.2.19-src
# ./configure --with-apr=/usr/ --with-java-home=/usr/local/jdk1.8.0_181 --with-ssl
# make && make install

说明:./configure有两个参数需要注意下,–with-apr=/usr/提供的是查找apr的路径可以更详细的一点,–with-java-home后面跟随的地址要和”echo $JAVA_HOME”输出地址一致。

根据安装完成后的提示操作

把库添加到/etc/ld.so.conf

1
2
3
4
5
6
# vim /etc/ld.so.conf
/usr/local/apr/lib //添加该行

# ldconfig  //重新加载
# echo "ldconfig" >> /etc/rc.local  //这是开机自启文件的软链接,需要源文件有执行权限

配置环境变量

1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib  //新增一行

配置APR

修改conf/server.xml里的协议

修改conf/server.xml里的协议,这个协议是标签里的标签的参数protocol,默认协议是HTTP/1.1。我们将协议修改为org.apache.coyote.http11.Http11AprProtocol

1
2
3
4
<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
redirectPort="8443" />

在bin/catalina.sh中引用apr

1
2
3
4
5
#  vim /usr/local/tomcat8.5/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" //这是第261行,在这下面添加一行参数
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib" //只要添加这一行