在高并发下会让性能有明显提升。安装完成后重启即可生效。如使用默认protocal就是apr,但最好把将protocol修改成org.apache.coyote.http11.Http11AprProtocol,会更加明确。
cd /usr/local/tomcat1/conf
vi server.xml
替换Connector内容如下:
<Connector port="8080"
        protocol="org.apache.coyote.http11.Http11AprProtocol"
        executor="tomcatThreadPool"
        compression="on"
        compressionMinSize="2048"
        maxThreads="30000"
        minSpareThreads="512"
        maxSpareThreads="2048"
        enableLookups="false"
        redirectPort="8443"
        acceptCount="35000"
        debug="0"
        connectionTimeout="40000"
        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
下面我们开始进行测试两种协议的压力情况:
centos安装ab
yum install httpd-tools
准备之后我们就可以测试了
ab -kc 1000 -n 10000 :8080/
这个指令会使用1000个并发,进行连接10000次。结果如下:
NIO最快的一次:

APR的最快一次:

差距是50%左右,强烈推荐使用APR协议!!!不要使用NIO协议+APR库支持的行为!!!!!!!!
如果安装不上APR或者真的没有办法启用APR,那么用如下的备用方案:
<Connector port="8080"
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        executor="tomcatThreadPool"
        compression="on"
        compressionMinSize="2048"
        maxThreads="30000"
        minSpareThreads="512"
        maxSpareThreads="2048"
        enableLookups="false"
        redirectPort="8443"
        acceptCount="35000"
        debug="0"
        connectionTimeout="40000"
        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
在安装tomcat-native时可以指定JDK的位置
./configure --with-apr=$HOME/APR \
 --with-java-home=$JAVA_HOME \
更多Tomcat相关教程见以下内容:
RedHat Linux 5.5安装JDK+Tomcat并部署Java项目
Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案

