Centos6安装Tomcat/7.0.96+apr模式+openssl-1.1.0k+jdk1.7优化性能 |
发表者:admin分类:应用服务2019-08-10 03:01:40 阅读[2137] |
Tomcat有三种运营模式:bio、nio、apr,不同模式下Tomcat的运行效率差别比较大。
一、bio(blockingIO)
阻塞式IO,Tomcat6及以前版本默认运行模式,性能非常低下,没有经过任何优化处理。
二、nio(noblocking IO)
非阻塞式IO,Tomcat7以后的版本默认运行模式,利用java异步IO技术使Tomcat运行性能有所提升。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8543" />
如果要在Tomcat6开启NIO模式,直接修改server.xml里的Connector节点,修改protocol为
org.apache.coyote.http11.Http11NioProtocol,启动生效。
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8543" />
三、apr(Apache Portable Runtime)
从操作系统级别来解决异步的IO问题,大幅度的提高性能。
必须要安装apr和native,直接启动就支持apr。
下载 相关最新版软件与安装编译环境。
231 wget http://us.mirrors.quenda.co/apache//apr/apr-1.7.0.tar.gz
232 wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.1.tar.gz
233 wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.2.tar.gz
234 yum install gcc make gcc-c++
242 yum install gcc make autoconf automake
243 yum install expat-devel
首先需要升级openssl,不然tomcat不支持,无法启动。
424 tar zxvf openssl-1.1.0k.tar.gz
425 cd openssl-1.1.0k
428 ./config --prefix=/usr/local/openssl-1.1.0k shared zlib-dynamic && make
429 make install
这里需要单独新装个目录,不然最的启动tomcat 会报错,因为tomcat 在编译tomcat-native 时,使用的是
系统中自带的openssl的中旧库文件。这样启动tomcat时,日志会报错,无法启动,具体如下 :
警告: The APR based Apache Tomcat Native library failed to load. The error reported was [/usr/local/apr/lib/libtcnative-1.so.0.2.23: /usr/local/apr/lib/libtcnative-1.so.0.2.23: undefined symbol: BN_get_rfc3526_prime_8192]
java.lang.UnsatisfiedLinkError: /usr/local/apr/lib/libtcnative-1.so.0.2.23: /usr/local/apr/lib/libtcnative-1.so.0.2.23: undefined symbol: BN_get_rfc3526_prime_8192
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
严重: Failed to initialize connector [Connector[HTTP/1.1-8080]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8080]]
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: org.apache.catalina.LifecycleException: The configured protocol [org.apache.coyote.http11.Http11AprProtocol] requires the APR/native library which is not available
at org.apache.catalina.connector.Connector.initInternal(Connector.java:972)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
..
使用ldd 查看库文件信息,会发现连接的库信息都是旧版本的/lib64/libssl.so.10
这都是旧版本的openssl 库文件。
# : ldd /usr/local/apr/lib/libtcnative-1.so.0.2.10
linux-vdso.so.1 => (0x00007ffd137fa000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007f6efdf31000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f6efdb48000)
libapr-1.so.0 => /usr/local/apr/lib/libapr-1.so.0 (0x00007f6efd915000)
librt.so.1 => /lib64/librt.so.1 (0x00007f6efd70d000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f6efd4d5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6efd2b9000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f6efd0b5000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6efccf2000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f6efcaa6000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f6efc7c1000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f6efc5bc000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f6efc38a000)
libz.so.1 => /lib64/libz.so.1 (0x00007f6efc174000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6efe3d0000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007f6efbf70000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f6efbd61000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f6efbb5d000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f6efb942000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6efb71d000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f6efb4bb000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f6efb296000)
2.1 安装APR
310 tar zxvf apr-1.7.0.tar.gz
311 cd apr-1.7.0
312 ./configure --prefix=/usr --disable-static --with-installbuilddir=/usr/share/apr-1/build
316 make install
326 ./configure --with-apr=/usr
327 make
328 make install
2.2 安装APR-UTILS
320 ./configure --prefix=/usr --with-apr=/usr --with-gdbm=/usr --with-openssl=/usr/local/openssl-1.1.0k --with-crypto --with-apr-iconv=/usr/local/apache2/bin/apriconv
321 make
322 make install
2.3 安装tomcat-native,编译完成就可以了。
360 tar zxvf tomcat-native.tar.gz
361 cd tomcat-native-1.2.23-src/native/
367 ./configure --with-ssl=/usr/local/openssl-1.1.0k
368 make
369 make install
3、配置APR本地库到系统共享库搜索路径中
方式1:
设置LD_LIBRARY_PATH和LD_RUN_PATH环境变量,指向/usr/local/apr/lib目录,可配置到/etc/.profile文件中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
source /etc/profile
方式2:
拷贝/usr/local/apr/lib目录下所有动态库到/usr/lib或/lib系统共享库搜索目录下即可。
copy /usr/local/apr/lib/libtcnative* /usr/lib/
方式3:(推荐)
编辑$TOMCAT_HOME/bin/catalina.sh文件,在虚拟机启动参数JAVA_OPTS中添加java.library.path参数,指定apr库的路径
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"
关闭ssl,将SSLEngine的值从on改成off即可:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
Tomcat 6.x版本从6.0.32开始就默认支持apr
Tomcat 7.x版本从7.0.30开始就默认支持apr
Tomcat8以下版本,需要指定运行模式,将protocol从HTTP/1.1改成org.apache.coyote.http11.Http11AprProtocol
1、server.xml
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="1000"
maxHttpHeaderSize="8192"
acceptCount="1000"
disableUploadTimeout="true"
connectionTimeout="20000"
redirectPort="8230" />
tomcat7.x-Connector参数
http://tomcat.apache.org/tomcat-7.0-doc/config/http.html
http://tomcat.apache.org/tomcat-8.0-doc/config/http.html
tomcat--Connector参数解读
<Connector
port="80" //监听端口
protocol="HTTP/1.1" //协议
enableLookups="false" //禁止反向DNS查询客户端主机名
maxThreads="600" //最大线程数
minSpareThreads="100" //初始化创建的线程数
maxSpareThreads="500" //一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。在7.8取消了
acceptCount="700" //最大等待数
connectionTimeout="20000" //连接超时
redirectPort="8443" //重定向
/>
给tomcat 添加角色与账号密码,tomcat-users.xml配置文件增加以下内容:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>
自行根据情况调整参数。我这里使用普通用户启动tomcat程序,
需要改最大文件句柄数和打开文件的数目
由于打开文件会比较多,所以要考虑修改默认打开文件数目
cat /etc/security/limits.conf
tomcat soft nproc 500000
tomcat hard nproc 500000
tomcat soft nofile 1048000
tomcat hard nofile 1048000
[root@zabbixserver lib]# cat /etc/security/limits.d/90-nproc.conf
* soft nproc unlimited
root soft nproc unlimited
给/etc/profile修改登陆环境。
JAVA_HOME=/usr/java/default
JRE_HOME=/usr/java/default/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$JAVA_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
if [ $USER = "tomcat" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 500000 -n 1048000
fi
fi
最后切换普通用户后,运行Tomcat,看到如下日志表示开启apr模式成功:
判定运行方式
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
Starting ProtocolHandler ["http-bio-8080"]
Starting ProtocolHandler ["http-nio-8080"]
Starting ProtocolHandler ["http-apr-8080"]
转载请标明出处【Centos6安装Tomcat/7.0.96+apr模式+openssl-1.1.0k+jdk1.7优化性能】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
Tags: | [阅读全文...] |
最新评论