springBoot中jetty tomcat undertow对比与undertow线程池配置
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线程池配置相关推荐
- SpringBoot中修改tomcat最大连接数、最大线程数、最大等待数
1)maxThreads(最大线程数)每一次HTTP请求到达Web服务器,Web服务器都会创建一个线程来处理该请求,该参数决定了应用服务同时可以处理多少个HTTP请求,tomcat默认为200:2)a ...
- Springboot应用中线程池配置教程(2021版)
前言:日常开发中我们常用ThreadPoolExecutor提供的线程池服务帮我们管理线程,在Springboot中更是提供了@Async注解来简化业务逻辑提交到线程池中执行的过程.由于Springb ...
- tomcat使用线程池配置高并发连接
1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: [html] view plain copy <Executor name=&q ...
- springboot线程池配置
1. application.yml配置 # 异步线程配置 # 配置核心线程数 async.executor.thread.core_pool_size: 10 # 配置最大线程数 async.exe ...
- java中executors_Java通过Executors提供四种线程池
http://cuisuqiang.iteye.com/blog/2019372 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如 ...
- SpringBoot中的Tomcat是如何启动的
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo ...
- SpringBoot中使用AMQ的两种方式(Java配置、注解方式)
Java配置方式使用AMQ 1. 引入依赖(pom.xml) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- SPRINGBOOT中如何进行开发环境和生产环境的配置?
最近需要频繁的进行产品发布,更改配置文件实在过于复杂,改来改去,改到最后自己都忘记了.SPRINGBOOT能不能同时支持两个配置文件呢? 答案是可以的: 首先,我们要建立三个配置文件,一个名为 app ...
- SpringBoot中的配置文件详解(yml、properties全局配置和自定义配置、有趣的banner图配置)
✌ 作者简介:信年✘ ✌,大家可以叫我 ❤信年❤ ,一位精通五门语言的博主 ✌
最新文章
- 我在硅谷工作的第四年:技术是怎么把信息变现的
- 2.Spring初学
- 通过修改EIP寄存器实现强行跳转并且注入DLL到目标进程里
- cka教程_2020年11月新版CKA考试心得
- SQL Server 索引和表体系结构(包含列索引)
- Tomcat虚拟根目录与虚拟目录
- 《java入门第一季》之类面试题
- 破解各种加密软件的方法
- SAP message TK 248 solved
- 64位windows无法正常安装dnw的解决方案
- 内核源码中版本号详解(KERNEL_VERSION KERNEL_VERSION)
- 天平应什么放置_天平室管理要求
- 十大高颜值蓝牙耳机排行榜,最受欢迎的真无线蓝牙耳机前十名
- 牛客练习赛59 小松鼠吃松果(优化dp二维偏序)
- Linux下使用dd命令制作启动盘
- 科技对我们生活有哪些影响?未来科技的发展趋势是什么?
- PTA 7-194 循环结构 —— 中国古代著名算题。趣味题目:物不知其数。
- HDU 1427 速算24点 (深搜)
- Android 获取手机通讯录联系人列表(仅供学习)
- 【Matlab】MATLAB打包生成.p文件(保护知识产权+需要matlab开发环境)
热门文章
- linux—高级网络配置:网桥
- 数学之美(二)Java实现绚烂绽放
- 测试工程师技术之外软技能提升指南
- 用计算机计算复利怎么算,【复利终值、复利现值用计算器怎么计算】- 环球网校...
- 【Python】Pyinstaller打包路径配置(Failed to execute script ‘app‘ due to unhandled exception已解决)
- 怀疑在软件测试中所起的作用
- 字节跳动1/3员工不支持取消大小周工作制, 员工:每年少赚10万块!
- 基于STM32的CAN总线通信学习笔记
- Linux RHEL7如何开机自动连接网络
- ULN2803L UTC八位达林顿 代替TI/TOSHIBA