• Tomcat、Jetty、Undertow、Netty 等容器的区别


    • undertow,jetty 和 Tomcat 可以说是 javaweb 项目当下最火的三款服务器,Tomcat 是 apache 下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。
    • 然而:当下微服务兴起,Spring boot ,Spring cloud 越来越热的情况下,选择一款轻量级而性能优越的服务器是必要的选择。Spring boot 完美集成了 Tomcat,Jetty 和 undertow,本文将通过对 Jetty 和 undertow 服务器的分析以及测试,来比较两款服务器的性能如何。
    • 值得一提的是 Jetty 和 undertow 都是基于 NIO 实现的高并发轻量级的服务器,支持 servlet3.1 和 WebSocket。

    image.png

    728 x 198 730 x 199

    因此: SpringBoot 使用轻量级的 undertow 容器替代重量级 Tomcat,支持 HTTP2.0,性能更好,稳定性更好

    • pom.xml 配置如下:
     <!-- 添加spring-boot-starter-web,默认使用tomcat作为web容器 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!-- 去除tomcat,将undertow作为容器 -->
             <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-undertow</artifactId>
            </dependency>
     
     
    application.properties 配置如下
     
    server:
      undertow:
        # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
        # 不要设置过大,如果过大,启动项目会报错:打开文件数过多
        io-threads: 8
        # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
        # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
        worker-threads: 64
        # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
        # 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
        buffer-size: 1024
        # 是否分配的直接内存(NIO直接分配的堆外内存)
        direct-buffers: true


    作者:sumoonyoko
    链接:https://ld246.com/article/1575252759539
    来源:链滴
    协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

  • 相关阅读:
    URL的JavaScript解决之道
    JavaScript中Date对象的几个扩展方法
    taobao open
    Linux操作系统的日志说明
    DG常用运维命令及常见问题解决
    oracle系统视图
    oracle 自动备份、恢复功能
    oracle队列
    spring学习笔记
    sql语句拾遗
  • 原文地址:https://www.cnblogs.com/xiaobug/p/14078541.html
Copyright © 2020-2023  润新知