springBoot中jetty tomcat undertow对比

1)tomcat优点是稳定性好、可靠性高、支持 Servlet 和 JSP 等标准。构建中小型的 Web 应用程序,可以选择 Tomcat。另外,Spring Boot 默认使用的是 Tomcat
2)Jetty 是一个轻量级的 Web 服务器,它的优点是启动速度快、内存占用小、支持 HTTP/2 和 WebSocket 等新特性。Jetty 适合用于构建高并发、低延迟的 Web 应用程序。社区活跃度高
3)undertow基于 NIO 的 Web 服务器,性能最高、内存占用更小、支持 HTTP/2 和 WebSocket 等新特性。社区活跃度较低Undertow 适合用于构建高并发、低延迟的 Web 应用程序。

如果需要构建中小型的 Web 应用程序,可以选择 Tomcat。
如果需要更多的功能支持和更活跃的社区,可以选择 Jetty。
如果需要更高的性能和更小的内存占用,可以选择 Undertow;

因为编程项目需要用到websocket、对并发要求高,所以采用了undertow。
其配置如下:
server:
  # 内置服务器启动端口,启动多个实例一定要指定(-Dserver.port="xxxx")
  port: 8082
  undertow:
    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
    io-threads: 16
    # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
    worker-threads: 1024
这里io-threads和worker-threads是两个线程池的大小,其中io-threads用于处理非阻塞的任务,所以对应的线程个数一般等于cpu核数
worker-thread是用于执行业务逻辑的线程池,例如处理请求、计算响应等。这些操作通常是阻塞的,所以其线程个数一般是根据业务进行确认,如核数*8或者更大。

还不理解,那这里给出实例:
假设有一个 Web 应用程序,它需要处理大量的请求,并且每个请求都需要进行一些计算。为了提高服务器的性能,我们可以使用 Undertow 服务器,并设置两个线程池:server.undertow.io-threads 和 work-threads。

当一个请求到达服务器时,它首先会被 server.undertow.io-threads 中的线程处理。这些线程会读取请求并将其转发给 work-threads 中的线程池。work-threads 中的线程会执行计算任务,并将结果返回给 server.undertow.io-threads 中的线程。最后,server.undertow.io-threads 中的线程将响应写回客户端。

这个过程中,server.undertow.io-threads 中的线程不会被阻塞,因为它们只是负责读取请求和写入响应。而 work-threads 中的线程会被阻塞,因为它们需要执行计算任务。通过这种方式,我们可以充分利用服务器的资源,提高并发处理能力,同时保证每个请求都能够得到及时的响应。

其实io-threads有点类似netty的bossgroup,worker-threads有点类似work group

你们undertow使用的是http什么版本?
使用的是默认的1.1,没有开启2.0,如果需要开启2.0需要增加如下配置:
server.http2.enabled=true

springBoot中jetty tomcat undertow对比与undertow线程池配置相关推荐

  1. SpringBoot中修改tomcat最大连接数、最大线程数、最大等待数

    1)maxThreads(最大线程数)每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求,tomcat默认为200:2)a ...

  2. Springboot应用中线程池配置教程(2021版)

    前言:日常开发中我们常用ThreadPoolExecutor提供的线程池服务帮我们管理线程,在Springboot中更是提供了@Async注解来简化业务逻辑提交到线程池中执行的过程.由于Springb ...

  3. tomcat使用线程池配置高并发连接

    1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: [html] view plain copy <Executor name=&q ...

  4. springboot线程池配置

    1. application.yml配置 # 异步线程配置 # 配置核心线程数 async.executor.thread.core_pool_size: 10 # 配置最大线程数 async.exe ...

  5. java中executors_Java通过Executors提供四种线程池

    http://cuisuqiang.iteye.com/blog/2019372 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如 ...

  6. SpringBoot中的Tomcat是如何启动的

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo ...

  7. SpringBoot中使用AMQ的两种方式(Java配置、注解方式)

    Java配置方式使用AMQ 1. 引入依赖(pom.xml) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  8. SPRINGBOOT中如何进行开发环境和生产环境的配置?

    最近需要频繁的进行产品发布,更改配置文件实在过于复杂,改来改去,改到最后自己都忘记了.SPRINGBOOT能不能同时支持两个配置文件呢? 答案是可以的: 首先,我们要建立三个配置文件,一个名为 app ...

  9. SpringBoot中的配置文件详解(yml、properties全局配置和自定义配置、有趣的banner图配置)

     ✌ 作者简介:信年✘ ✌,大家可以叫我 ❤信年❤ ,一位精通五门语言的博主 ✌

最新文章

  1. 我在硅谷工作的第四年:技术是怎么把信息变现的
  2. 2.Spring初学
  3. 通过修改EIP寄存器实现强行跳转并且注入DLL到目标进程里
  4. cka教程_2020年11月新版CKA考试心得
  5. SQL Server 索引和表体系结构(包含列索引)
  6. Tomcat虚拟根目录与虚拟目录
  7. 《java入门第一季》之类面试题
  8. 破解各种加密软件的方法
  9. SAP message TK 248 solved
  10. 64位windows无法正常安装dnw的解决方案
  11. 内核源码中版本号详解(KERNEL_VERSION KERNEL_VERSION)
  12. 天平应什么放置_天平室管理要求
  13. 十大高颜值蓝牙耳机排行榜,最受欢迎的真无线蓝牙耳机前十名
  14. 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)
  15. Linux下使用dd命令制作启动盘
  16. 科技对我们生活有哪些影响?未来科技的发展趋势是什么?
  17. PTA 7-194 循环结构 —— 中国古代著名算题。趣味题目:物不知其数。
  18. HDU 1427 速算24点 (深搜)
  19. Android 获取手机通讯录联系人列表(仅供学习)
  20. 【Matlab】MATLAB打包生成.p文件(保护知识产权+需要matlab开发环境)

热门文章

  1. linux—高级网络配置:网桥
  2. 数学之美(二)Java实现绚烂绽放
  3. 测试工程师技术之外软技能提升指南
  4. 用计算机计算复利怎么算,【复利终值、复利现值用计算器怎么计算】- 环球网校...
  5. 【Python】Pyinstaller打包路径配置(Failed to execute script ‘app‘ due to unhandled exception已解决)
  6. 怀疑在软件测试中所起的作用
  7. 字节跳动1/3员工不支持取消大小周工作制, 员工:每年少赚10万块!
  8. 基于STM32的CAN总线通信学习笔记
  9. Linux RHEL7如何开机自动连接网络
  10. ULN2803L UTC八位达林顿 代替TI/TOSHIBA