在tomcat6的server.xml里边可以看到ajp和apr,nio相关配置信息。话说ajp1.3(Apache JServ
Protocol)是定向包协议,跟http1.1那样是一种协议来的,使用二进制格式来传输可读性文本。如果WEB服务器通过TCP连接和
servlet容器连接。为了减少进程生成
socket的花费,WEB服务器和servlet容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请
求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
而APR(Apache Portable Runtime)是一个高可移植库,它是Apache HTTP Server
2.x的核心。包括访问高级IO功能(例如sendfile,epoll和OpenSSL),OS级别功能(随机数生成,系统状态等等),本地进程管理
(共享内存,NT管道和UNIX
sockets)。这些功能可以使Tomcat作为一个通常的前台WEB服务器,能更好地和其它本地web技术集成,总体上让Java更有效率作为一个高
性能web服务器平台而不是简单作为后台容器。 所以呢,apr是可以和ajp,http结合使用的。
nio(new
io)又是什么,它早在jdk1.4就被引入了,一直以来好像也不是很多人关注这个。主要作用就是用来解决速度差异的。举个例子:计算机处理的速度和用户
按键盘的速度。这两者的速度相差悬殊。如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费:每一个线程都需要
珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。这nio是怎么做的?无非就是非阻塞,谁要给谁,用模式话语就是观察者模式
了。所以nio和ajp,http也是没冲突的。
这么搞起来,io的方式就有apr,nio,普通io等,协议就有ajp,http等等,再加上带不带连接池什么什么的,在tomcat里边就有n多
种io+protocol组合可供选择了。至于那种方式比较好,也没什么定论,nio也不一定比no好,要不早就流行了。以前也试过nio,性能反而下降
了,还是要具体情况具体分析呀。tomcat6默认的配置是apr+http1.1,感觉这个配置还是相当合理的。呵,在这里也并不想比较哪个好点,只是
希望有新同学再看到这些概念的时候不会乱了分寸。
分享到:
相关推荐
AJP Connector, 基于AJP协议,AJP是专门设计用来为tomcat与http服务器之间通信专门定制的协议,能提供较高的通信速度和效率。如与Apache服务器集成时,采用这个协议。 APR HTTP Connector, 用C实现,通过JNI调用...
AJP Connector, 基于AJP协议,AJP是专门设计用来为tomcat与http服务器之间通信专门定制的协议,能提供较高的通信速度和效率。如与Apache服务器集成时,采用这个协议。 APR HTTP Connector, 用C实现,通过JNI...
那么如果没有配置APR,Tomcat会使用Http11NioProtocol。 为什么不使用NIO2,一看感觉像是加强版的NIO一样??其实两个是不同的东西。NIO是reactor模式,平常说的基本是只这个,比如说典型的Netty便是NIO扩建。NIO2则...
通常,Tomcat 在默认配置下运行在 NIO (Non-blocking Input/Output) 模式下,但在处理大量静态文件请求时,这种模式的效率并不理想。APR 模块则利用 JNI (Java Native Interface) 技术与操作系统直接交互,提高响应...
2. 连接管理:Ajp13Protocol采用`AprSocketConnector`(APR库)或`BioAjpProtocol`(基于传统阻塞I/O的实现),处理AJP连接。 四、连接器配置 Tomcat Connectors的配置可以通过`server.xml`文件进行,包括设置端口...
- **AJP Connector**:基于AJP(Apache JServ Protocol)协议,专为Tomcat与其他HTTP服务器(如Apache)间通信设计,具有高速传输效率。 - **APR (Apache Portable Runtime) HTTP Connector**:C语言实现,通过JNI...
Tomcat启动日志中的`Starting ProtocolHandler`信息可显示当前使用的运行模式,如`http-bio-8080`、`http-nio-8080`或`http-apr-8080`。 5. 启动NIO模式 修改`server.xml`中`Connector`节点的`protocol`属性为`...
8. **连接器与协议**:Coyote连接器负责处理HTTP和HTTPS连接,支持AJP、NIO、NIO2和 APR(Apache Portable Runtime)等通信模型。APR提供更高效和原生的网络I/O,适用于高并发场景。 9. **性能优化**:可以通过调整...
Tomcat支持三种不同的运行模式:bio、nio和apr。 - **bio (Blocking I/O)**:这是默认模式,但其性能较差,不适合高并发场景。 - **nio (New I/O)**:nio利用Java SE 1.4及后续版本提供的新I/O操作方式,支持非阻塞...
Tomcat支持三种运行模式:bio、nio、apr,根据应用场景选择最适合的运行模式也很关键。 部署测试用的Java Web项目是验证Tomcat配置是否合理的重要步骤。部署web应用后,通过访问首页确认是否已成功启动,这是最基本...
- 通过 `<Connector protocol="org.apache.coyote.http11.Http11Nio2Protocol">` 实现 NIO2 支持。 - **优点**: - 提供更好的 I/O 处理性能,特别是在高并发环境下。 - 支持异步 I/O,减少资源消耗。 #### APR ...
在Tomcat中,`AprEndpoint`和`NioEndpoint`是两个常见的`Endpoint`实现,分别基于Apache Portable Runtime (APR)库和Java NIO(非阻塞I/O)。 关于标签“源码”,我们可以看到,深入理解Tomcat的源码对于优化服务器...
在**参数最佳实践**中,通常建议禁用AJP连接器,因为AJP主要用于连接WEB服务器和Servlet容器,而在Nginx+Tomcat这样的架构中,HTTP反向代理已经足够,无需AJP。 最后,**JVM参数**的调整同样重要。正确配置JVM堆...
Tomcat支持三种运行模式:BIO、NIO 和 APR,每种模式都有其特点和适用场景: - **BIO (Blocking I/O)**:这是Tomcat默认的模式,每个连接都会占用一个独立的线程来处理请求,适用于低并发场景。但在高并发环境下,...
10. **NIO和APR连接器**:Tomcat 8.5提供了基于Java NIO和Apache Portable Runtime (APR)的连接器,两者都提供了高性能的网络I/O,适应不同的服务器环境。 在使用"apache-tomcat-8.5.23.exe"安装文件时,用户需要...
配置HTTP和AJP Connector,关注`maxThreads`、`minSpareThreads`等属性,以适应不同类型的请求负载。 **JVM参数优化** 1. **JVM内存模型** 调整JVM内存参数可以避免Full GC的发生,例如当年老代或持久代空间不足...
NIO(Non-blocking I/O)和 APR(Apache Portable Runtime)连接器提供了更高效的I/O处理方式。 6. **安全与身份验证**:Tomcat可以通过 Realm组件实现用户认证,例如Memory Realm、JDBC Realm等。通过conf/server....
- **使用NIO或APR连接器**:相较于BIO,NIO或Apache Portable Runtime (APR) 提供非阻塞I/O,能处理更多并发连接。 4. **部署优化**: - **应用war大小**:压缩、合并和优化静态资源,如CSS、JavaScript,减少war...
- **运行模式**:Tomcat支持三种主要的连接器类型,即BIO、NIO和APR。 - **BIO**(Blocking IO):默认模式,性能较低,适合于简单的应用。 - **NIO**(Non-blocking IO):基于Java NIO技术,能显著提高并发性能...