Tomcat 可以使用 APR 来提供超强的可伸缩性和性能,更好地集成本地服务器技术。 APR(Apache Portable Runtime) 是一个高可移植库,它是 Apache HTTP Server 2.x 的核心。 APR 有很多用途,包括访问高级 IO 功能 ( 例如 sendfile,epoll 和 OpenSSL) , OS 级别功能 ( 随机数生成,系统状态等等 ) ,本地进程管理 ( 共享内存, NT 管道和 UNIX sockets) 。这些功能可以使 Tomcat 作为一个通常的前台 WEB 服务器,能更好地和其它本地 web 技术集成,总体上让 Java 更有效率作为一个高性能 web 服务器平台而不是简单作为后台容器。
在产品环境中,特别是直接使用 Tomcat 做 WEB 服务器的时候,您应该使用 Tomcat Native 来提高其性能,详细配置和安装请参考 Tomcat 文档。
如果没有 apr 技术,启动 tomcat 时出现如下提示:
信息 : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/jdk1.6.0_06/jre/lib/i386/client:/usr/java/jdk1.6.0_06/jre/lib/i386:/usr/java/jdk1.6.0_06/jre/../lib/i386:/usr/java/packages/lib/i386:/lib:/usr/lib
按照官方说明需要:
* APR library
* OpenSSL libraries
openssl 可以用 yum install openssl-devel , apr 还是下载 *.gz 来安装。
apr-1.3.2.tar.gz
apr-util-1.3.2.tar.gz
两个可以在 http://apache.mirror.phpchina.com/apr/ 找到。
tomcat-native.tar.gz 可以在 tomcat/bin 目录下找到。
下面是 APR 的配置过程:
安装 apr
1. tar zxvf apr-1.3.2.tar.gz
2. cd apr-1.3.2
3. ./configure --prefix=/usr/local/apr
4. make
5. make install
apr 默认安装在 /usr/local/apr
安装 apr-util
1. tar zxvf apr-util-1.3.2.tar.gz
2. cd apr-util-1.3.2
3. ./configure --with-apr=/usr/local/apr
4. make
5. make install
安装 tomcat-native
1. cd /usr/local/tomcat7.myweb/bin
2. tar zxvf tomcat-native.tar.gz
3. cd tomcat-native-1.1.14-src/jni/native
4. ./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.7.0_60
5. make
6. make install
设置 apr 的环境变量:
1. vi /etc/profile
2. 添加以下内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$APR_HOME/lib
3. 使配置生效 source /etc/profile
为不影响其他 tomcat的配置,我们不采用上面的设置方法,而是直接在 tomcat的 bin下的 catalina.sh中加入如下配置:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_LIBRARY_PATH
启动 tomcat 后,看日志,有如下一行:
信息 : APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
-------------------------------------------------------------------------------------------------
创建高线程的 Connector :
<Connector port=”8080 ″ redirectPort=”8443 ″
maxThreads=”5000 ″ 默认 200 300
minSpareThreads=”1000 ″ 默认 4 50
maxSpareThreads=”4000 ″ 默认50 100
enableLookups=”false” 默认 true
acceptCount=”3500 ″ 默认10 50
compression=”on” 默认 off
compressableM imeType=”text/html,text/xml,text/javascript,text/css,text/plain” 默认 text/html,text/xml,text/plain
connectionTimeout=”60000 ″ 默认 60000
debug=”0 ″
URIEncoding=”UTF -8 ″
/ >