在高并发下会让性能有明显提升。安装完成后重启即可生效。如使用默认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实时日志中文乱码解决方案