`
xiaoZ5919
  • 浏览: 404792 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

Tomcat NIO/APR对静态资源提速

阅读更多

1.Tomcat如何处理静态资源?处理静态资源很简单,只需根据URI定位到文件,然后读取文件,写到response的outputstream中去,但tomcat是如何处理,是不是通过servlet container统一处理,还有另有其他方式?最终我发现是由DefaultServlet来处理。

2.APR/NIO Connecter不仅能提高吞吐量,而且使用sendFile使用内核IO,而不是java通过封装以后的IO提高对静态文件的处理。

3.是不是所有的文件都交给sendFile来处理呢?不是,在DefaultServlet中有一个sendFileSize,默认为48k,也就是说只有48k以上的文件才能通过sendFile方式来处理。

4.如有修改DefaultServlt的默认参数,只在web.xml中重新配置DefaultServlet,并修改initParameter。

5.Tomcat代码研究:Tomcat对静态资源提供缓存提高了性能

 if (serveContent) {
                try {
                    response.setBufferSize(output);
                } catch (IllegalStateException e) {
                    // Silent catch
                }
                if (ostream != null) {
                    //是否满足使用sendFile的条件,如满足则使用
                    if (!checkSendfile(request, response, cacheEntry, contentLength, null))
                       //不满足,则copy文件到response中的outputStream中
               //
                        copy(cacheEntry, renderResult, ostream);
                } else {
                    copy(cacheEntry, renderResult, writer);
                }
            }

 

分享到:
评论
2 楼 xiaoZ5919 2012-11-22  
是这样,tomcat的三种connector中只有NIO和APR模式支持sendFile。sendFile避免用户态和内核之间的四次copy,直接在内核态将文件流写入tcp栈。tomcat自己定了一个界限是48k,他认为48k一下的文件通过缓存的方式性能会比较好。
1 楼 religiose 2012-11-21  
48K以下的文件就用NIO 了么?

相关推荐

    NiO/γ-Al2O3的制备及对煤微波热解的影响

    以浸渍-焙烧法制备NiO/Al2O3型催化剂....结果表明,NiO/γ-Al2O3催化剂在煤微波热解过程中有明显催化作用,对煤热解制可燃气体及焦油产率有明显提高,其中以超声浸渍、450℃焙烧4h制备的产品催化活性更优.

    NiO/TiO2复合结构的制备及其电化学性能研究

    随后,通过循环伏安法(CV)和恒电流充放电法对NiO/TiO2复合结构的电化学性能进行了测试。 实验结果显示,NiO的沉积量与前驱体液中Ni(NO3)2·6H2O的浓度成正比,随着浓度的增加,比电容值也会相应提升。然而,当浓度...

    webServer tomcat5 / tomcat6 / tomcat7 / tomcat8

    此外,它增强了安全性,提供了更好的管理工具,以及对NIO(非阻塞I/O)的支持,提高了并发性能。 2. **Tomcat 6**:此版本进一步提升了性能,支持Servlet 2.5和JSP 2.1规范。它还引入了新的管理接口,改进了部署...

    制备条件对煤热解制氢用NiO/γ-Al2O3催化剂活性影响的研究

    文章介绍了一种负载型NiO/γ-Al2O3催化剂的制备,并且从Ni的负载量、焙烧时间、焙烧温度3个方面探讨了不同的制备条件对NiO/γ-Al2O3催化剂活性的影响。通过实验确定了NiO/γ-Al2O3催化剂制备的最佳工艺条件,应用XRD...

    手写 tomcat nio

    这个过程不仅可以帮助我们深入理解Tomcat的工作原理,还能提升对Java NIO框架的掌握。然而,需要注意的是,实际的Tomcat服务器远比这个简化的实现复杂,它包含了更多的细节处理和优化。在实际项目中,如果需要高性能...

    氮气退火对NiO/ZnO:A1薄膜PN结的影响* (2012年)

    使用UV-1700型分光光度计、KEITHLEY4200-SCS半导体测试仪、JSM-6490LV型扫描电子显微镜等分析氮气退火对NiO/ZnO:A1薄膜性能的影响。实验结果表明:500℃退火范围内,NiO薄膜的透过率随退火温度的升高单调上升,500℃...

    tomcat 1000/s 并发配置

    4. **启用NIO或 APR**: Tomcat默认使用BIO(阻塞I/O),但为了提高性能,可以切换到NIO(非阻塞I/O)或APR(Apache Portable Runtime)模式。NIO使用单一线程处理所有连接,而APR利用操作系统级别的特性,如Windows...

    Tomcat8/window/64

    7. **性能优化**:Tomcat可以通过调整连接器配置、增加线程池大小、开启NIO模式等方式提升性能。 8. **日志系统**:Tomcat的日志信息保存在logs目录下,通过配置logging.properties可以定制日志输出。 9. **多版本...

    烧结温度对NiO/MWCNT活性材料电化学性能的影响

    烧结温度对NiO/MWCNT活性材料电化学性能的影响,吴微,顾大伟,本文以乙醇为分散剂,配制六水合硝酸镍(Ni(NO3)2o6H2O)和多壁碳纳米管(MWCNT)的混合物,在不同温度(200 ~ 400 ℃)下烧结该混合物得�

    tomcat7/8/9.zip

    【标题】"tomcat7/8/9.zip" 涵盖了三个版本的Apache Tomcat服务器,分别是Tomcat 7.0.88、Tomcat 8.5.37以及Tomcat 9.0.10。Apache Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java Servlet和JavaServer ...

    基于Java NIO/AIO技术的鹊桥内网穿透设计源码

    该项目是一款基于Java NIO/AIO技术的鹊桥内网穿透设计源码,包含360个文件,涵盖171个JavaScript文件、101个Java源文件、23个HTML文件、17个XML文件、13个CSS文件、7个PNG图片文件、6个Shell脚本文件、5个属性文件、...

    tomcat apr模式所需资源包

    APR与Tomcat结合,可以让Tomcat更好地利用硬件资源,特别是在处理大量并发连接时,能显著提升性能。 要启用Tomcat的APR模式,首先需要安装两个关键的依赖库:OpenSSL和APR库。OpenSSL是一个强大的安全套接字层密码...

    tomcat7.59/7.65/7.79linux版

    3. **NIO和 APR连接器**:Tomcat 7支持两种连接器模式,NIO(非阻塞I/O)适用于高并发场景,而APR(Apache Portable Runtime)利用操作系统的原生API提高性能。 4. **更好的安全性**:Tomcat 7增强了安全管理器,...

    apr库(tomcat优化)

    主要提升对静态资源(如HTML、图片、CSS、JS等)的访问性能。现在这个库已独立出来可用在任何项目中。Tomcat在配置APR之后性能非常强劲。 tomcat默认采用的BIO模型,在几百并发下性能会有很严重的下降。tomcat自带还有...

    变质煤催化剂NiO/γ-Al2O3的制备及对煤微波热解的影响研究

    介绍热解催化剂NiO/γ-Al2O3的制备过程,分析不同蔗糖用量对催化剂的影响。阐述煤的催化热解机理,利用催化剂进行变质煤微波热解实验,实验结果显示催化剂对煤炭热解产物都有明显影响,通过调整实验条件可以获得更加理想...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    全面理解 Java 网络编程 - BIO、NIO、AIO 本课程旨在帮助学生全面理解 Java 网络编程中的 BIO、NIO、AIO 三剑客,掌握 RPC 编程的基础知识,并结合实战项目巩固所学。 一、网络编程三剑客 - BIO、NIO、AIO BIO...

    cipher-list-creator.jsp:为 Tomcat NIOBIO 连接器的 server.xml 创建密码列表

    目标环境Tomcat + JDK 使用 NIO/BIO 连接器进行 SSL。 在 Tomcat 7 + Java 7 / Tomcat 8 + Java 8 上测试,但写成 Tomcat 4.1 + JDK1.4.2 兼容。注意密码列表按推荐顺序排序。 接下来 Tomcat 将支持 Tomcat 8.0.21 /...

    tomcat apr工具包及安装说明

    export APR_DIR=/path/to/apr/installation export SSL_LIBS="-lssl -lcrypto" ./configure --with-apr=$APR_DIR --with-java-home=$JAVA_HOME --with-ssl=$SSL_LIBS make sudo make install ``` 5. 配置...

    tomcat apr

    默认情况下,Tomcat使用纯Java的NIO(非阻塞I/O)模型来处理网络通信,但当集成APR时,它能利用操作系统级别的特性,如Epoll(Linux)或Kqueue(FreeBSD, macOS)来提升性能。 APR库通过一个名为`tcnative-1.dll`的...

Global site tag (gtag.js) - Google Analytics