Spring Boot 配置 Undertow 容器

这篇具有很好参考价值的文章主要介绍了Spring Boot 配置 Undertow 容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot 配置 Undertow 容器

配置之前,您需要知道的是,Tomcat, Jetty, Undertow 作为三大主流 Servelt 容器,Undertow 的性能要优于前两者。

所以,我们推荐您使用 Undertow 容器。接下来,就我们看看如何在 Spring Boot 中快捷地集成 Undertow。

一、添加 Maven 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 移除掉默认支持的 Tomcat -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 添加 Undertow 容器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

二、启动项目

添加完上面的 maven 依赖后,Undertow 容器就已经集成完毕了,接下来,让我们启动项目,看看控制台输出:

Connected to the target VM, address: '127.0.0.1:50915', transport: 'socket'

  .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )___ | '_ | '_| | '_ / _` | \ \ \ \
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

2023-10-10 20:29:28.876  INFO 21908 --- [           main] s.e.s.SpringBootUndertowApplication      : Starting SpringBootUndertowApplication on DESKTOP-RL6P6LA with PID 21908 (C:\dev\idea_workspace_personal\spring-boot-tutorial\spring-boot-undertow\target\classes started by allen in C:\dev\idea_workspace_personal\spring-boot-tutorial)
2023-10-10 20:29:28.885  INFO 21908 --- [           main] s.e.s.SpringBootUndertowApplication      : No active profile set, falling back to default profiles: default
2023-10-10 20:29:34.388  WARN 21908 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2023-10-10 20:29:34.478  INFO 21908 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2023-10-10 20:29:34.478  INFO 21908 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 5449 ms
2023-10-10 20:29:35.471  INFO 21908 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2023-10-10 20:29:36.423  INFO 21908 --- [           main] org.xnio                                 : XNIO version 3.3.8.Final
2023-10-10 20:29:36.447  INFO 21908 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.3.8.Final
2023-10-10 20:29:36.614  INFO 21908 --- [           main] o.s.b.w.e.u.UndertowServletWebServer     : Undertow started on port(s) 8080 (http) with context path ''
2023-10-10 20:29:36.621  INFO 21908 --- [           main] s.e.s.SpringBootUndertowApplication      : Started SpringBootUndertowApplication in 8.912 seconds (JVM running for 10.232)
2023-10-10 20:29:48.534  INFO 21908 --- [  XNIO-1 task-1] io.undertow.servlet                      : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-10-10 20:29:48.534  INFO 21908 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-10-10 20:29:48.547  INFO 21908 --- [  XNIO-1 task-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 12 ms

启动成功,当您看到 Undertow started on port(s) 8080 (http) with context path '' 的行输出时,说明此时正在使用的是 Undertow 容器,而非 Tomcat !
Spring Boot 配置 Undertow 容器

三、Undertow 相关配置

您可以针对 Undertow 容器做一些特定配置,如日志输出路径,设置工作者线程的个数等参数优化等,如下所示:

# 是否打开 undertow 日志,默认为 false
server.undertow.accesslog.enabled=false
# 设置访问日志所在目录
server.undertow.accesslog.dir=logs
# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
server.undertow.io-threads=
# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
server.undertow.worker-threads=
# 设置 HTTP POST 内容的最大长度,默认不做限制
server.undertow.max-http-post-size=0

四、Tomcat Vs Undertow 容器性能对比

在文章的开始,我们提到过 Undertow 的性能要优于 Tomcat, 但是口说无凭,需要拿出实际的证据,新建一个 Web 项目,通过 JDK 自带的工具对比一下各项指标情况:

先看看 Tomcat:
Spring Boot 配置 Undertow 容器

可以看到,Tomcat 大约使用了 110M 的堆内存以及大约 16 个线程数!

再来看看轻量级 Servlet 容器 Undertow 的指标:
Spring Boot 配置 Undertow 容器

Undertow 的内存使用情况大约为 90M, 线程数大约 13 个线程的样子。这还是在应用不复杂的情况下,大型应用出入会更大。

五、环境说明

上述 Demo 是基于 Spring Boot 2.1.2.RELEASE,需要注意一下 !文章来源地址https://www.toymoban.com/news/detail-711561.html

到了这里,关于Spring Boot 配置 Undertow 容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 8核16G的CentOS服务器,Spring boot undertow如何优化参数提高并发,电商项目

    对于运行在8核16GB内存的CentOS服务器上的Spring Boot电商项目,使用Undertow作为嵌入式服务器时,可以通过以下参数优化来提高并发性能: 1. 线程池配置 io-threads :IO线程数,负责处理非阻塞的网络IO。通常设置为与CPU核心数相等的值,即8。 worker-threads :工作线程数,处理阻塞操

    2024年04月25日
    浏览(46)
  • Spring Boot 在启动之前还做了哪些准备工作?

    目录 一:初始化资源加载器 二:校验主要源 三:设置主要源 四:推断 Web 应用类型

    2024年02月05日
    浏览(47)
  • Spring Boot |如何让你的 bean 在其他 bean 之前完成加载

    问题 今天有个小伙伴给我出了一个难题:在 SpringBoot 中如何让自己的某个指定的 Bean 在其他 Bean 前完成被 Spring 加载?我听到这个问题的第一反应是,为什么会有这样奇怪的需求? Talk is cheap,show me the code,这里列出了那个想做最先加载的“天选 Bean” 的代码,我们来分析一

    2024年02月05日
    浏览(61)
  • Spring Boot 如何让你的 bean 在其他 bean 之前完成加载 ?

    今天有个小伙伴给我出了一个难题:在 SpringBoot 中如何让自己的某个指定的 Bean 在其他 Bean 前完成被 Spring 加载?我听到这个问题的第一反应是,为什么会有这样奇怪的需求? Talk is cheap,show me the code,这里列出了那个想做最先加载的“天选 Bean” 的代码,我们来分析一下:

    2024年02月03日
    浏览(40)
  • 【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们已经学习了Spring Boot的配置,接下来我们要学习一些日志相关的东西,什么是日志呢?我们慢慢往下看.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些

    2024年02月08日
    浏览(48)
  • SpringBoot 之 Tomcat 与 Undertow 容器性能对比

    环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE         在上一篇《SpringBoot 之配置 Undertow 容器》一文中写道:“Undertow 的性能和内存使用方面都要优于 Tomcat 容器”, 这一期,我就要给大家来求证一波,口说无凭,那我就拿当前的 Web 项目来做为测试项目,监控

    2024年02月06日
    浏览(38)
  • 扩展点都不知道不要说你用了Spring Boot

    哈哈,本次有点标题党的嫌疑了,话又说回来,如果只停留在Spring Boot的基本的CRUD层面,未免也太过局限了,当需要去扩展一些功能,写一些组件的时候,就感觉无从下手了,所以本次,我们从一个标题党开始,了解一下Spring Boot 的扩展点,可以系统的了解记忆一下, 此文不

    2024年02月15日
    浏览(75)
  • 【SpringBoot】88、SpringBoot中使用Undertow替代Tomcat容器

    SpringBoot 中我们既可以使用 Tomcat 作为 Http 服务,也可以用 Undertow 来代替。Undertow 在高并发业务场景中,性能优于 Tomcat。所以,如果我们的系统是高并发请求,不妨使用一下 Undertow,你会发现你的系统性能会得到很大的提升。 1、Tomcat 介绍 Tomcat是一个开源的Java Servlet容器,它

    2024年02月13日
    浏览(42)
  • SpringBoot系列(四十四):Tomcat与Undertow容器性能对比分析|超级详细,建议收藏

            Tomcat和Undertow都是非常流行的Java Web容器,它们都有自己的优缺点。但在实际项目中,我们如何选择最合适的容器呢?是选择老牌的Tomcat,还是选择后起之秀的Undertow?本篇文章将深入分析Tomcat和Undertow的性能表现,为大家揭秘最佳选择!无论你是Java开发者还是想深

    2023年04月21日
    浏览(46)
  • Spring Boot 如何使用 Web 容器

    在使用 Spring Boot 进行开发时,我们通常需要使用 Web 容器来处理 HTTP 请求和响应。本文将介绍 Spring Boot 如何使用 Web 容器,包括如何配置 Web 容器、如何处理 HTTP 请求和响应等内容,并提供相应的代码示例。 Spring Boot 中默认使用 Tomcat 作为 Web 容器,但是也支持其他的 Web 容器

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包