一直以为用了tomcat6,就默认打开了nio呢,原来是误解啊。
每个web客户端请求对于服务器端来说就一个单独的线程,客户端的请求数量增多将会导致线程数就上去了,CPU就忙着跟线程切换。
而NIO则是使用单线程(单个CPU)或者只使用少量的多线程(多CPU)来接受Socket,而由线程池来处理堵塞在pipe或者队列里的请求.这样的话,只要OS可以接受TCP的连接,web服务器就可以处理该请求。大大提高了web服务器的可伸缩性。
大家都听说了在Apache Tomcat6 中支持了Java语言的特性 NIO( New I/O),不管你对NIO的技术是否熟悉,但你肯定能想象的到NIO是一个好东西。的确,使用NIO在服务器端会有更好的性能,加强服务器端对并发处理的性能。 请注意:很抱歉,在tomcat6在默认的配置选项中是没有把NIO功能打开。所以很多正在使用Tomcat6的朋友们本以为能快活的使用上NIO。
不信,你可以试试,从Apache Tomcat 站点下载 的Tomct6 压缩包中 conf/server.xml的 配置文件第69行,内容如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
进行测试,可以在控制台的启动信息里看见,默认状态下没有被打开nio配置,启动时的信息,如下:
2010-2-1 12:59:40 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2010-2-1 12:59:40 org.apache.catalina.startup.Catalina load
修改成支持NIO的类型,配置如下:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
进行测试,被打开nio配置,启动时的信息,如下:
2010-2-1 13:01:01 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
2010-2-1 13:01:01 org.apache.coyote.http11.Http11NioProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
这样才能让你真正体验到Tomcat6下NIO给你的系统带来的快感。
原文地址:http://www.javabloger.com/article/performance_tomcat_about_nio.html
补充一点内容。
在nio之前,大家都喜欢配置 minSpareThreads="50" maxSpareThreads="200"这样的参数以提高tomcat性能,使用了nio之后,这些内容就不用了,因为你已经使用singlethread了,不存在sparethread了。这些内容可以注释掉了。
分享到:
相关推荐
1、关闭了几乎不再使用的 ajp 协议配置(server.xml), 2、 启用nio 和 线程池配置 (server.xml) 3、修改了context.xml ,添加redis 支持(注意redis 连接密码) 4、在Root目录添加了test.jsp 用于查看多tomcat...
【标题】:“手写 Tomcat NIO” 在深入探讨手写Tomcat NIO之前,我们首先需要理解NIO(Non-...在实际项目中,如果需要高性能的Web服务器,可能需要考虑使用成熟的开源产品,如Tomcat本身或Netty等高性能NIO框架。
为了更好地处理大量并发请求,Tomcat可以配置为使用NIO连接器,即`org.apache.coyote.nio.NioEndpoint`。这种连接器利用Java NIO的非阻塞特性,允许单个线程服务多个客户端请求,提高了服务器的资源利用率和吞吐量。...
【标题】"tomcat6到8windows版本.zip" 涵盖了三个不同版本的Apache Tomcat,分别是Tomcat 6、Tomcat 7和Tomcat 8.5,这些都是针对Windows操作系统设计的64位版本。Apache Tomcat是一款开源的Java Servlet容器,主要...
在构建高性能的网络服务器时,非阻塞I/O...例如,作者创建了一个简单的NIO Server,能够在保持6万连接的同时承受3到4万TPS的负载,验证了这种模式的有效性。这个模式对于未来设计高性能的网络服务具有很高的参考价值。
【标题】:“Tomcat版本6、7、8”的对比与演变 在Java Web开发领域,Apache Tomcat是一款广泛应用的开源Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)技术规范。Tomcat6、Tomcat7和Tomcat8是三个...
3-5Tomcat响应请求源码与nio处理请求源码实现.mp4
4. **Pipeline和Valve**:Tomcat使用Pipeline和Valve概念来实现请求处理的链式结构,每个Valve代表一个处理阶段,Pipeline将它们串联起来。这种设计允许灵活地添加、删除或修改请求处理逻辑。 5. **ClassLoader机制...
在使用Tomcat6时,需要注意以下关键知识点: 1. **配置环境变量**:包括设置JAVA_HOME指向Java SDK的路径,以及设置CATALINA_HOME指向Tomcat的安装目录。 2. **启动与停止**:通过`bin`目录下的`startup.bat`和`...
【标题】:“Tomcat6 免安装解压版”是一个专为方便用户快速部署和运行的Web服务器,它不需要经过繁琐的安装过程,只需简单解压缩即可投入使用。这个版本是针对Tomcat6的一个纯净版,去除了初始项目,使得启动速度...
在实际应用中,Tomcat常与其他Java EE组件如EJB、JMS等结合使用,构建更复杂的企业级应用。同时,由于其轻量级和易于管理的特性,Tomcat也常被用作开发和测试环境。下载这个压缩包,开发者可以进行不同版本的比较,...
【标题】:“Tomcat 8.5.56 X64 NIO2模式性能优化版+垃圾处理机制.zip”指的是一个特别针对Windows x64平台优化的Tomcat 8.5.56版本,该版本集成了NIO2(非阻塞I/O)模式,并对垃圾收集(Garbage Collection, GC)...
4. **连接器(Connector)组件**:Tomcat 6引入了新的连接器组件,如NIO(非阻塞I/O),提供更高的并发性和性能,尤其适用于处理大量短连接的应用。 5. **安全管理**:Tomcat 6提供了更强大的安全配置,包括对SSL/...
在本文中,我们将深入探讨Tomcat 6x的关键特性和使用场景,以及如何管理和配置这个应用服务器。 1. **Java Servlet与JSP支持** Tomcat的主要功能是作为Servlet和JSP的运行环境。Servlet是一种Java编程接口,用于...
- 使用JVisualVM、VisualVM等工具监控Tomcat的内存、CPU使用情况,及时发现并解决问题。 - 使用JMeter、 Gatling等压力测试工具,模拟高并发场景,找出性能瓶颈。 8. **缓存策略**: - 应用级缓存,如Ehcache或...
Apache Tomcat 6 是一个广泛使用的开源Java Servlet容器,它实现了Java EE的Servlet和JavaServer Pages(JSP)规范。这个压缩包包含了Tomcat 6的服务器版本和源代码,让我们来深入了解一下这两个组成部分以及它们的...
还可以启用NIO模式以提高并发能力,或者使用 APR(Apache Portable Runtime)库提升I/O性能。 9. **扩展性**: Tomcat的模块化设计使得它可以方便地添加或替换组件,如添加其他类型的连接器、替换默认的Jasper JSP...
- 使用NIO(非阻塞I/O)模式代替BIO(阻塞I/O),提高服务器性能。 - 配置连接器的空闲超时时间,避免资源浪费。 - 开启JVM的内存优化,合理设置堆内存大小。 7. **日志管理**: Tomcat的日志信息默认保存在`...
- 可以通过调整JVM参数、开启NIO连接器、使用连接池等方式提升Tomcat的性能。 10. **集成开发环境(IDE)**: - 多数IDE如Eclipse、IntelliJ IDEA都支持与Tomcat的集成,可以直接在IDE中启动和部署应用,便于开发...
2. 使用了新的NIO.2 API,提供了更好的异步处理能力和更高的并发性能。 3. 通过使用ALPN(Application-Layer Protocol Negotiation)协议,实现了对HTTP/2的无缝支持。 4. 引入了动态监听器和过滤器,允许在运行时...