WEB开发网
开发学院软件开发Java Servlet API 和 NIO: 最终组合在一起 阅读

Servlet API 和 NIO: 最终组合在一起

 2009-11-08 00:00:00 来源:WEB开发网   
核心提示: java-cpbinorg.sse.server.Start8080"C:\mywebroot"还请注意,服务器并没有实现目录清单,Servlet API 和 NIO: 最终组合在一起(7),因此必须指定有效的 URL 来指向您的 webroot 目录下的文件,性能结果示例

java -cp bin org.sse.server.Start 8080 
"C:\mywebroot" 

还请注意,服务器并没有实现目录清单,因此必须指定有效的 URL 来指向您的 webroot 目录下的文件。

性能结果

示例 NIO 服务器是在重负载下与 Tomcat 5.0 进行比较的。选择 Tomcat 是因为它是基于标准 Java I/O 的纯 Java 解决方案。为了提高可伸缩性,一些高级的应用程序服务器是用 JNI 本机代码优化的,因此它们没有提供标准 I/O 和 NIO 之间的很好比较。目标是要确定 NIO 是否给出了大量的性能优势,以及是在什么条件下给出的。

如下是一些说明:

Tomcat 是用最大的线程数量 2000 来配置的,而示例服务器只允许用 4 个工作线程运行。

每个服务器是针对相同的一组简单 HTTP get 测试的,这些 HTTP get 基本上由文本内容组成。

把加载工具(Microsoft Web Application Stress Tool)设置为使用“Keep-Alive”会话,导致了大约要为每个用户分配一个 socket。然后它导致了在 Tomcat 上为每个用户分配一个线程,而 NIO 服务器用固定数量的线程来处理相同的负载。

图 2 展示了在不断增加负载下的“请求/秒”率。在 200 个用户时,性能是相似的。但当用户数量超过 600 时,Tomcat 的性能开始急剧下降。这最有可能是由于在这么多的线程间切换上下文的开销而导致的。相反,基于 NIO 的服务器的性能则以线性方式下降。记住,Tomcat 必须为每个用户分配一个线程,而 NIO 服务器只配置有 4 个工作线程。


图 2. 请求/秒
Servlet API 和 NIO: 最终组合在一起

图 3 进一步显示了 NIO 的性能。它展示了操作的 Socket 连接错误数/分钟。同样,在大约 600 个用户时,Tomcat 的性能急剧下降,而基于 NIO 的服务器的错误率保持相对较低。


图 3. Socket 连接错误数/分钟
Servlet API 和 NIO: 最终组合在一起

结束语

在本文中您已经学习了,实际上可以使用 NIO 编写基于 Servlet 的 Web 服务器,甚至可以启用它的非阻塞特性。对于企业开发人员来说,这是好消息,因为在企业环境中,NIO 比标准 Java I/O 更能够进行伸缩。不像标准的 Java I/O,NIO 可以用固定数量的线程处理许多客户机。当基于 Servlet 的 NIO Web 服务器用来处理保持和拥有 socket 连接的客户机时,会获得更好的性能。

上一页  2 3 4 5 6 7 

Tags:Servlet API NIO

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接