Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下:
三种模式的比较和优化
这三种模式的不同之处如下:
- BIO:
一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。
Tomcat7或以下,在Linux系统中默认使用这种方式。
- NIO:
利用Java的异步IO处理,可以通过少量的线程处理大量的请求。
Tomcat8在Linux系统中默认使用这种方式。
Tomcat7必须修改Connector配置来启动:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" redirectPort="8443"/>
- APR:
即Apache Portable Runtime,从操作系统层面解决io阻塞问题。
Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。
Linux如果安装了apr和native,Tomcat直接启动就支持apr。(安装方法:http://my.oschina.net/lsw90/blog/181161)
官方对这三种的区别的详细说明:
Java Blocking Connector Java Nio Blocking Connector APR/native Connector
BIO NIO APR
Classname AjpProtocol AjpNioProtocol AjpAprProtocol
Tomcat Version 3.x onwards 7.x onwards 5.5.x onwards
Support Polling NO YES YES
Polling Size N/A maxConnections maxConnections
Read Request Headers Blocking Sim Blocking Blocking
Read Request Body Blocking Sim Blocking Blocking
Write Response Blocking Sim Blocking Blocking
Wait for next Request Blocking Non Blocking Non Blocking
Max Connections maxConnections maxConnections maxConnections
BIO NIO APR
Classname AjpProtocol AjpNioProtocol AjpAprProtocol
Tomcat Version 3.x onwards 7.x onwards 5.5.x onwards
Support Polling NO YES YES
Polling Size N/A maxConnections maxConnections
Read Request Headers Blocking Sim Blocking Blocking
Read Request Body Blocking Sim Blocking Blocking
Write Response Blocking Sim Blocking Blocking
Wait for next Request Blocking Non Blocking Non Blocking
Max Connections maxConnections maxConnections maxConnections
Tomcat启动的时候,可以通过log看到Connector使用的是哪一种运行模式:
- Starting ProtocolHandler ["http-bio-8080"]
- Starting ProtocolHandler ["http-nio-8080"]
- Starting ProtocolHandler ["http-apr-8080"]
安装:
1 下载apr 和 apr-util最新版
1
2
3
|
wget http://apache.fayea.com//apr/apr-1.5.2.tar.gzwget http://apache.fayea.com//apr/apr-util-1.5.4.tar.gz |
2 解压文件
1
2
3
|
tar -zxvf apr- 1.5 . 0 .tar.gz
tar -zxvf aor-util- 1.5 . 3 .tar.gz
|
3 安装apr和apr-util
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
cd apr- 1.5 . 0
./configure --prefix=/usr/local/apr make make install cd .. cd apr-util- 1.5 . 3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make make insatll |
4 安装 tomcat-native
1
2
3
4
5
6
|
cd /usr/local/tomcat/bin tar -zxvf tomcat- native .tar.gz
cd tomcat- native - 1.1 . 29 -src/jni/ native
./configure --with-apr=/usr/local/apr --with-java- home=/usr/java/jdk1. 7 .0_25
make make install |
5 设置 apr 的环境变量
1
2
3
4
5
6
7
8
9
|
vi /etc/profile #在文本的最后面添加以下内容 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib #使profile生效, source /etc/profile |
修改 tomcat 的启动 shell (catalina.sh),在该文件中加入启动参数:
CATALINA_OPTS="$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib"
6 启动tomcat并查看catalina.out
1
2
3
|
./startup.sh cat catalina.out |
出现 :org.apache.catalina.core.AprLifecycleListener.init Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.5.0.
则apr安装成功
相关推荐
要启用Tomcat的APR模式,首先需要安装两个关键的依赖库:OpenSSL和APR库。OpenSSL是一个强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能,以及SSL协议,并提供丰富的应用程序供...
包里面有apr-1.6.3.gz/apr-iconv-1.2.2.tar.gz/apr-util-1.6.1.gz/openssl-1.1.0f.tar.gz/tomcat-native-1.2.16-src.tar.gz
Tomcat使用APR库可以提高性能,尤其是对于处理高并发请求时,APR库支持的多线程和异步I/O模式能带来显著优势。 **2. 问题原因** - APR库未正确安装:Tomcat在启动时无法找到对应的动态链接库文件(例如在Linux上为...
通过上述步骤,你已经成功配置了Tomcat的APR模式。不过,值得注意的是,虽然APR在处理静态文件方面有优势,但并不意味着在所有场景下都适用。对于动态内容的处理,JVM优化可能更为重要。此外,APR需要额外的系统级...
开启APR模式后,Tomcat可以利用操作系统级别的优化,提高网络I/O效率,尤其是对于高并发场景,性能提升显著。但需要注意,启用APR可能增加系统复杂性,并且需要对JVM进行适当的调优,以确保系统稳定运行。
要启用APR模式,首先需要确保系统已经正确安装了APR库,并且在编译或部署Tomcat时指定了使用APR。然后,在`server.xml`文件中,将`<Connector>`元素的`protocol`属性设置为`"org.apache.coyote....
所包含安装包 做了优化后的Tomcat包 apr-1.6.2.tar.gz apr-iconv-1.2.1.tar.gz apr-util-1.6.0.tar.gz openssl-1.0.2k.tar.gz tomcat-native.tar.gz expat-2.2.1.tar.bz2 cronolog-1.6.2.tar.gz
在Apache服务器和Tomcat中,PCRE用于解析和执行HTTP请求中的URL路径、代理规则以及其他配置中的模式匹配。这使得服务器能够更灵活地处理和路由请求,以及实现自定义的过滤和重定向规则。 在提供的压缩包文件中,...
通过 tomcat-native 库,使tomcat运行时通过APR更多的调用本地API,达到提升性能的目的。下面这篇文章详细介绍了Tomcat安装与配置Native APR模式的教程,需要的朋友可以参考借鉴,一起来看看吧。
在实际应用中,Apache Tomcat Native库通常会与Java的NIO(Non-blocking I/O)模式结合使用,以实现更高效的异步I/O操作。 标签"源码"和"工具"暗示这篇博客可能包含了关于APR库的源代码分析,以及如何将其作为一个...
tomcat-apr, tomcat的apr优化所必须的组件,用于对tomcat的NIO读写模式进行优化,以提高tomcat的读写能力,进而提高tomcat的吞吐量。内部包含apr-1.6.5.tar.gz、apr-iconv-1.2.2.tar.gz、apr-util-1.6.1.tar.gz、...
在Windows环境下,集成Apache2.2与Tomcat5.5并使用Apr(Apache Portable Runtime)进行优化,可以提升Web服务器的性能。Apache2.2是广泛应用的HTTP服务器,而Tomcat则是Java应用服务器,主要处理Servlet和JSP。Apr是...
通常,Tomcat 在默认配置下运行在 NIO (Non-blocking Input/Output) 模式下,但在处理大量静态文件请求时,这种模式的效率并不理想。APR 模块则利用 JNI (Java Native Interface) 技术与操作系统直接交互,提高响应...
在Windows平台,Tomcat默认使用APR模式;而在Linux环境下,则需要手动安装APR和Native库才能启用该模式。启用APR模式通常能带来更好的性能表现。 ##### 3.4 执行器(线程池)配置 默认情况下,Tomcat并没有启用...
APR模式下的Tomcat8优化主要体现在以下几个方面: 1. **性能提升**:APR通过直接调用操作系统的原生API,避免了Java层的性能开销,提升了I/O效率,使得Tomcat在处理网络连接和文件读写时速度更快。 2. **负载均衡*...
在某些场景下,开启 APR 模式可以提高 Tomcat 的性能,尤其是在处理网络连接和 SSL 加密时。通过集成 APR 库,Tomcat 可以利用操作系统的原生网络和 SSL 功能,从而获得比纯 Java 实现更高的效率。 为了在 Tomcat ...
apr模式是Tomcat服务器的高性能运行模式。apr模式需要安装apr和native组件,然后启动服务器,apr模式就会生效。apr模式可以从操作系统级别来解决异步的IO问题,大幅度的提高性能。 apr模式需要安装apr和native组件...
5. **嵌入式模式**:Tomcat 8引入了嵌入式模式,使得在应用程序中直接集成Tomcat变得更加简单。 6. **MBean服务器**:内置了MBean服务器,使得通过Java Management Extensions (JMX)进行远程监控和管理更加方便。 *...