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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/6047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

制造业的寒冬真的要来了吗?

制造业的寒冬真的要来了吗?其实当前,我国制造业发展水平是处于全球第三阵列,排名第四的: 但能处第三序列靠前,还是因为“规模发展”起了重要支撑——依靠规模拉动发展。所以如果从“质量效益”、“结构优化”、“持续发…

【AI探索】我问了ChatGPT几个终极问题

终于尝试了一把ChatGPT的强大之处,问了一下关心的几个问题: chatGPT现在在思考吗?有没有什么你感兴趣的问题? 你认为AI会对人类产生哪些方面的影响? 你对人类所涉及到的学科有了解吗?你认为在哪些方面与人类…

JetPack Compose之Modifier修饰符

前言 在Compose中,每一个组件都是带有Compose注解的函数,被称为Composable。Compose已经预置了很多的Compose UI组件,这些组件都是基于Material Design规范设计的,例如Button,TextField,TopAPPBar等。在布…

IOC、AOP、和javca面试题

一、 1、控制反转(IOC) 将创建管理对象的工作交给容器来做。在容器初始化(或在某个时间节点)通过反射机制创建好对象,在使用时直接从容器中获取。 控制反转:将对象的控制权反过来交给容器管理。 IOC实现…

既然有http 请求,为什么还要用rpc调用?

先弄明白什么是RPC。 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之…

【面试】Java并发编程面试题

文章目录基础知识为什么要使用并发编程多线程应用场景并发编程有什么缺点并发编程三个必要因素是什么?在 Java 程序中怎么保证多线程的运行安全?并行和并发有什么区别?什么是多线程多线程的好处多线程的劣势:线程和进程区别什么是…

基于java+ssm+vue病人跟踪治疗信息管理系统的搭建及源码

源码获取方式见文末 一.需求简介 病人治疗信息管理系统采用B/S模式,实现安全、快捷、高效的病人跟踪治疗信息管理。传统手工管理模式效率低下,已无法满足病人需求。 信息化时代的到来,使得开发病人跟踪治疗信息管理系统成为必然。 本系统采…

Linux 串口RS232/485/GPS 驱动实验(移植minicom)

目录Linux 下UART 驱动框架I.MX6U UART 驱动分析硬件原理图分析RS232 驱动编写移植minicomRS232 驱动测试RS232 连接设置minicom 设置RS232 收发测试RS485 测试RS485 连接设置RS485 收发测试GPS 测试GPS 连接设置GPS 数据接收测试串口是很常用的一个外设,在Linux 下…

python入门(一)conda的使用,创建修改删除虚拟环境,以及常用命令,配置镜像

文章目录背景1.conda的下载地址:2.安装3.执行常用命令1)查看版本2)查看所有虚拟环境3)创建虚拟环境4)激活虚拟环境5)关闭虚拟环境6)删除虚拟环境7)创建python2.7的虚拟环境8)使用pyt…

命令行上的数据科学第二版 二、开始

原文:https://datascienceatthecommandline.com/2e/chapter-2-getting-started.html 贡献者:Ting-xin 在这一章中,我需要确定你能够利用命令行做数据科学,为此你需要能满足一些条件。条件主要分为三个部分:&#xff08…

SQLyog图形化界面工具【超详细讲解】

目录 一、SQLyog 介绍 二、SQLyog 社区版下载 三、SQLyog 安装 1、选择Chinese后点击OK 2、点击“下一步” 3、选择“我接受”后点击“下一步” 4、点击“下一步” 5、修改安装位置(尽量不要安装在C盘),点击“安装” 6、安装后点击“…

剥茧抽丝,细数模块化的前世今生

写在前面 本篇是前端工程化打怪升级的第 1 篇,关注专栏 | 小册传送门 | 案例代码 近几年,时常会感叹,前端,发展的太迅猛了。日新月异的新概念,异彩纷呈的新思想泉水般涌出;前端项目的复杂度、开发成本、维护…

Python 自动化指南(繁琐工作自动化)第二版:十五、使用 PDF 和 WORD 文档

原文:https://automatetheboringstuff.com/2e/chapter15/ PDF 和 Word 文档是二进制文件,这使得它们比纯文本文件复杂得多。除了文本,它们还存储大量的字体、颜色和布局信息。如果您想让您的程序读写 PDF 或 Word 文档,您需要做的…

【从零开始学习 UVM】3.5、UVM TestBench架构 —— UVM Sequencer [uvm_sequencer]

文章目录 Usage(用法)Custom Sequencer(自定义sequencer)Class Hierarchy一个 sequencer 生成数据事务作为类对象并将其发送到driver以执行。建议扩展uvm_sequencer基类,因为它包含了允许sequence与driver通信所需的所有功能。基类是由可以被sequencer处理的requset和resp…

CookieSession

目录 一. 回顾cookie 二. 会话机制Session 1. cookie:标识用户的身份信息 2. cookie 和 session 的关联区别 三. 一些常用的核心方法及原理应用 1. HttpServletRequest 类中的相关方法 2. HttpServletResponse 类中的相关方法 3. HttpSession 类中的相关方…

博客2:YOLOv5车牌识别实战教程:理论基础

摘要:本篇博客介绍了YOLOv5车牌识别的理论基础,包括目标检测的概念、YOLO系列的发展历程、YOLOv5的网络结构和损失函数等。通过深入理解YOLOv5的原理,为后续实战应用打下坚实基础。 车牌识别视频正文: 2.1 目标检测概念 目标检测…

【01 Provider HAL and Device HAL】

1. Overview Camera Provider Hal 和 Camera Device Hal3 即在Hal3 整个架构中紫色框框出来的部分中: 2. 简介 (1). Android定义了几个Interface: ICameraProvider, ICameraDevice, ICameraDeviceSession, ICameraDeviceCallback 。 Camera Hal 层去实做了这些 Interface。…

chatGPT陪你读源码

概述 chatGPT从2022年11月份崭露头角以来,一直备受关注。他的人工智能对话颠覆了以往智能对话的刻板印象,跟chatGPT聊天,感觉就像百晓生一样,什么都懂。尤其在编程方面,chatGPT可以根据实际的业务场景需求&#xff0c…

GPT-4原论文详细解读(GPT-4 Technical Report)

GPT-4原论文详细解读(GPT-4 Technical Report)返回论文和资料目录 1.导读 相比之前的GPT-3.5等大型语言模型(这里可以看我的InstructGPT解读,也方便理解本文内容),GPT-4最大的不同在于变成了多模态&#…

部署大数据集群时踩过的坑 (持续更新)

大数据集群踩过的坑 前言(必看) 如果你遇到了和我一样的问题并通过搜索引擎进入这篇文章,请善用CtrlF键搜索 该自检手册仅用于自己学习使用,记录所有自己遇到的问题。如果你没有检索到你的问题,请使用Bing或Google进行搜索 该自检手册严格…
最新文章