apache-tomcat http有3种接收连接请求的协议,分别是:BIO、NIO、APR。
BIO:是tomcat默认的协议,对应的Connector中protocol配置是"HTTP/1.1
",或者是"org.apache.coyote.http11.Http11Protocol
"。
NIO:利用java的异步io处理技术,对应的配置是"org.apache.coyote.http11.Http11NioProtocol
"
APR:是利用系统级别来解决异步IO的问题。配置相对前两个比较麻烦,除了配置相应协议外"org.apache.coyote.http11.Http11AprProtocol
",还有安装apr,步骤如下:
- 安装apr tar zxvf apr-1.4.2.tar cd apr-1.4.2 ./configure --prefix=/usr/local/apr make make install
- 安装apr-iconv tar -zxvf apr-iconv-1.2.1.tar.gz cd apr-iconv-1.2.1 ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr make make install
- 安装apr-util tar zxvf apr-util-1.3.10.tar.gz cd apr-util-1.3.10 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr-iconv=/usr/local/apr-iconv/bin/apriconv make make install
- 安装tomcat-native tar zxvf tomcat-native-1.1.20-src.tar.gz cd tomcat-native-1.1.20-src/jni/native
./configure --with-apr=/usr/local/apr --with-java-home=/usr/java/jdk1.6.0_23 make make install- 添加环境变量 vi /etc/profile #在他文件末尾处添加下面的变量 export LD_LIBRARY_PATH=/usr/local/apr/lib 执行 source /etc/profile
使用AB进行的并发测试,请求的是一静态文件,测试数据如下:
绘制成图表如下:
通过图表可以看出,在并发量大的情况下APR协议性能比较好;NIO性能比较稳定;BIO波动较大;如果考虑安装和部署方面,建议使用NIO协议。