Tomcat 的一个可选组件是APR(Apache Portable Runtime), 这个工程组件在tomcat中的使用增进了稳定性和性能,特别是当tomcat也用于web服务器的时候. 在启动tomcat时, 我们可以在控制台上找到如下日志.
INFO: The Apache Tomcat Native library which allows optional performance in production environments was not found on the java.library.path
APR的windows文件可在http://tomcat.heanet.ie/native/处获取, 下载并保存tcnative-1.dll文件到<TOMCAT_HOME>/bin目录. 这个DLL包含了APR和OpenSSl的内容.还有就是openssl.exe
在linux下安装APR
1.安装APR
在http://apr.apache.org下载. 使用root用户安装APR至默认位置(/usr/local/apr)
$ tar zxvf apr-x.y.z.tar.gz
$ cd apr-x.y.z
$ ./buildconf
$ ./configure
$ make && make install
2. 安装APR的jni
在<TOMCAT_HOME>/bin目录下的tomcat-native.tar.gz文件, 指定安装了APR的位置,如果不需要OpenSSL支持,可以使用--without--ssl选项. 如果要的话, 可以从www.openssl.org上下载到.
$ cd /path/to/tomcat/bin
$ tar zxvf tomcat-native.tar.gz
$ cd tomcat-native-x.y.z-src/jni/native
$ ./configure --with-apr=/usr/local/apr --wwith-ssl=openssl_install_location
$ make install
3. 安装后,在LD_LIBRARY_PATH下添加APR目录
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
重启tomcat时, 可以看到一个
INFO: Loaded Apache Tomcat Native library1.1.9信息, 表明APR被检测和加载.
本地APR连接器不是完整的连接器. 它实际上利用了标准的基于java的连接器来完成其大部分操作. 不过,当启用本地代码APR连接器时, 为了性能--可扩展性--敏感的操作, java代码将转换到本地实现 . APR连接器通过3个主要的机制实现最优化性能和增强可扩展性.
- 使用sendfile() kernel mode call直接从缓存中发磅大型静态文件
- 为了大量连接,使用单一的本机代码来保存poller以实现连接保持激活状态
- 使用OpenSSL本地代码,它拥有为SSL处理(通过硬件)加速SSL实现的功能
以下两个条件启用APR连接器.
- 将protocol属性设置为org.apache.coyote.http11.Http11AprProtocol
- APR库在PATH环境变量(windows)或LD_LIBRARY_PATH(linux)中.
server.xml文件配置:
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
macThreads="150"
connectionTimeout="20000"
redirectPort="8443"
可配置的属性有:
allowTrace
emptySessionPath
enableLookups
maxPostSize
maxSavePostSize
protocol
proxyName
proxyPort
redirectPort
SSLEnabled
scheme
secure
URIEncoding
useBodyEncodingForURI
useIPVHosts
xpoweredBy
firstReadTimeout
poolTime
pollerSize
useSendfile 默认为true
sendfileSize