springboot undertow替换tomcat方式
版权声明: https://blog.csdn.net/weixin_38187317/article/details/81532560
说明
undertow,jetty和tomcat可以说是javaweb项目当下最火的三款服务器,tomcat是apache下的一款重量级的服务器,不用多说历史悠久,经得起实践的考验。然而:当下微服务兴起,spring boot ,spring cloud 越来越热的情况下,选择一款轻量级而性能优越的服务器是必要的选择。spring boot 完美集成了tomcat,jetty和undertow,本文将通过对jetty和undertow服务器的分析以及测试,来比较两款服务器的性能如何。
值得一提的是jetty和undertow都是基于NIO实现的高并发轻量级的服务器,支持servlet3.1和websocket。所以,有必要先了解下什么是NIO。
NIO(非阻塞式输入输出)
Channel
Selector
Buffer
Acceptor
Client和Server只向Buffer读写数据不关注数据的流向,数据通过Channel通道进行流转。而Selector是存在与服务端的,用于Channel的注册以此实现数据I/O操作。Acceptor负责接受所以的连接通道并且注册到Channel中。而整个过程客户端与服务端是非阻塞的也就是异步操作。
下面是压力测试对比图:
服务器 命中 成功率 吞吐量 平均耗时
Jetty 11488 100% 96.25 trans/sec 0.00sec
18393 100% 153.92 trans/sec 0.01sec
21484 99.99% 179.51 trans/sec 0.01sec
Undertow 11280 100% 94.02 trans/sec 0.00sec
19442 100% 163.35 trans/sec 0.01sec
23277 100% 195.54 tran/sec 0.01sec
Tomcat 10845 100% 90.95 trans/sec 0.02sec
21673 99.98% 181 trans/sec 0.01sec
25084 99.98% 209.10 trans/sec 0.01sec
从中可以看出在高负载下Undertow的吞吐量高于Jetty而且随着压力增大Jetty和Undertow成功率差距会拉大。而在负载不是太大情况下服务器处理能力差不多,jetty还略微高于Undertow。而tomcat的负载能力似乎和Undertow很接近。
对比三个服务器发现在Undertow在负载过重情况下比Jetty和Tocmat更加顽强,实践证明在负载继续加大情况下Undertow的成功率高于其它两者,但是在并发不是太大情况下三款服务器整体来看差别不大。
快速开始
更新pom.xml文件:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<!-- 下面的配置将使用undertow来做服务器而不是tomcat -->
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
application.yml配置:
server:
port: 8081
# 下面是配置undertow作为服务器的参数
undertow:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
io-threads: 4
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
worker-threads: 20
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分
buffer-size: 1024
# 是否分配的直接内存
direct-buffers: true
配置比较简单,和tomcat使用基本一样,然后就可以快乐的使用undertow啦~
转载于:https://www.cnblogs.com/xifenglou/p/10475695.html
springboot undertow替换tomcat方式相关推荐
- SpringBoot使用Undertow替换tomcat
什么是Undertow Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制.Undertow 是红帽公司的开源产品,是 Wildfly ...
- SpringBoot的Undertow和Tomcat对比
前言 在 SpringBoot 框架中,使用最多的是 Tomcat,这是 SpringBoot 默认的容器技术,而且是内嵌式的 Tomcat. 同时,SpringBoot 也支持 Undertow 容 ...
- springBoot中jetty tomcat undertow对比与undertow线程池配置
springBoot中jetty tomcat undertow对比 1)tomcat优点是稳定性好.可靠性高.支持 Servlet 和 JSP 等标准.构建中小型的 Web 应用程序,可以选择 To ...
- 解密Springboot内嵌Tomcat
Springboot简介 相信大多数开发者对Springboot比较熟悉了,它能够快速地创建一个spring应用,能够完全摒弃XML的配置方式,并且内嵌了Tomcat.Jetty这样的Servlet容 ...
- 指定SpringBoot内嵌Tomcat的版本,修复(CVE-2021-42340)漏洞
1.Tomcat漏洞 近日,Apache Tomcat 发布安全更新,更新了一处拒绝服务漏洞(CVE-2021-42340).攻击者可以通过该漏洞进行拒绝服务攻击.建议广大用户及时升级至最新版本. 1 ...
- tomcat start 无法启动_解密Springboot内嵌Tomcat
Springboot简介 相信大多数开发者对Springboot比较熟悉了,它能够快速地创建一个spring应用,能够完全摒弃XML的配置方式,并且内嵌了Tomcat.Jetty这样的Servlet容 ...
- 深入springboot怎么启动tomcat
深入springboot怎么启动tomcat @EnableAutoConfiguration做了哪些事 小总结 Tomcat何时启动的呢? 小总结 这是中高级工程师面试中常问的问题. 知道现在有多卷 ...
- SpringBoot undertow accesslog格式
关于SpringBoot undertow中accesslog的格式 1.背景 1.收集accesslog日志. 2.项目使用SpringBoot的undertow. 3.日志格式有特殊要求. 2.问 ...
- SpringBoot配置外部Tomcat项目启动流程源码分析(下)
前言 SpringBoot应用默认以Jar包方式并且使用内置Servlet容器(默认Tomcat),该种方式虽然简单但是默认不支持JSP并且优化容器比较复杂.故而我们可以使用习惯的外置Tomcat方式 ...
最新文章
- IDEA 解决 Java8 的数据流问题,用过的都说好!!!
- ISME:南土所梁玉婷组-不同气候条件下微生物代谢及残体介导施肥对土壤有机碳的影响...
- css3 box-shadow 总结
- px4 uavcan linux,UAVCAN总线 - UAVCAN固件升级 - 《PX4开发指南》 - 书栈网 · BookStack
- oracle查被锁存储过程,oracle 结束被锁的包或存储过程
- 小程序向webview传参_独家 | 支付宝小程序向个人开发者开放公测
- Visual C++ 2011-07-18
- MySQL基础篇(05):逻辑架构图解和InnoDB存储引擎详解
- 华图砖题库php文件怎么打印_事业单位招聘考试《工会基础知识》试题库及答案1380题...
- 中国喷漆室保护膜市场趋势报告、技术动态创新及市场预测
- 安卓9开机 bootanimation.zip_小米手机如何从安卓10退回安卓9系统,不丢失传感器,不变砖...
- win10固态硬盘分区 整数_固态硬盘怎么重装win10系统?Win10固态硬盘重装系统教程...
- android中的各种 Category
- webgl中解决深度冲突-多边形偏移
- 计算机在中药材的应用,计算机在中医药中的应用
- excel时间戳转换为时间格式
- Cloudflare免费CDN加速及防护
- jmeter压测学习10-linux上执行遇到的问题 There is insufficient memory for the Java Runtime Environment to continu
- 大型互联网架构设计踩坑
- 苹果放大镜在哪_说马思纯装卖惨恶心的,请拿着你的放大镜去找其他人!
热门文章
- 拳王虚拟项目公社:虚拟商品全自动化赚钱技术,虚拟产品自动赚钱能信吗?虚拟资源教程
- 朱海舟宣布新一批应用已经适配锤子TNT 网友:救救海舟
- Java并发编程之ConcurrentHashMap原理解析
- [python]json.loads 几种错误 解决方案
- linux内核文件cache机制,Linux内核文件Cache机制
- java加密 c解密_java+加密解密
- TCP/IP的初步理解,TCP和UDP的区别
- cups源码下载 linux_正点原子Linux第七十章Linux WIFI驱动实验
- 利用公式画图_【高中数学】重要公式大汇总!
- c++20 协程 图片识别框架 紫丁香