当前位置:首页 > 科技  > 软件

京东面试:SpringBoot同时可以处理多少请求?

来源: 责编: 时间:2024-05-24 17:23:42 323观看
导读Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:Spring Boot 同时可以处理多少个请求 ?准确的来说,Spring Boot 同时可

Pce28资讯网——每日最新资讯28at.com

Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:Spring Boot 同时可以处理多少个请求 ?Pce28资讯网——每日最新资讯28at.com

准确的来说,Spring Boot 同时可以处理多少个请求,并不取决于 Spring Boot 框架本身,而是取决于其内置的 Web 容器(因为 Web 容器的行为,决定了 Spring Boot 的行为,所以咱们姑且认为两个问题的回答是一样的)。Pce28资讯网——每日最新资讯28at.com

1.Web三大容器

Web 容器目前也是三分天下,市面上最常见的三种 Web 容器分别是:Tomcat、Undertow 和 Jetty,其中 Tomcat 为 Spring Boot 框架默认的 Web 容器。Pce28资讯网——每日最新资讯28at.com

它们三者的区别如下:Pce28资讯网——每日最新资讯28at.com

  • Tomcat 是 Apache 软件基金会下的开源项目,是最广泛使用的 Servlet 容器之一,完全实现了 Java Servlet 和 JavaServer Pages(JSP)规范。它不仅是一个 Servlet 容器,也是一个轻量级的应用服务器,尽管相比其他轻量级服务器,Tomcat 被认为是稍微重一些的。Tomcat 支持众多的企业级特性,如 SSL、连接池等,适合运行大型的、复杂的企业级应用。它的稳定性和成熟度经过了多年的企业级应用验证,因此在很多企业中作为首选的 Web 容器。
  • Undertow 是 Red Hat(红帽公司)开发的一个灵活的、高性能的 Web 服务器和反向代理服务器,它是 WildFly 应用服务器的默认 Web 容器。Undertow 设计上注重低内存占用和高并发处理能力,尤其擅长处理大量的短连接场景,比如 RESTful API 服务。Undertow 支持 Servlet 3.1、WebSocket以及非阻塞 IO(NIO),并且是支持 HTTP/2 协议的现代服务器之一。它的设计理念在于提供一个模块化、可嵌入式的解决方案,易于集成到现有的系统中,同时也适合微服务架构。
  • Jetty 是一个开源的、轻量级的 Web 服务器和 Servlet 容器,由 Eclipse 基金会维护。它以其可嵌入式、高度可配置性著称,常用于需要快速启动和轻量级部署的场景,比如开发阶段、测试环境或轻量级应用。Jetty 也支持 Servlet 规范和 WebSocket,且同样基于 NIO,使得它在处理大量并发连接时表现出色。Jetty 设计上强调灵活性和可扩展性,易于通过 API 定制以满足特定需求,因此在云环境、持续集成、DevOps 等领域很受欢迎。

Pce28资讯网——每日最新资讯28at.com

总的来说,Tomcat 因其成熟稳定和企业级特性适用于大型应用;Undertow 以高性能和低内存占用见长,特别适合处理高并发短连接场景;而 Jetty 则以轻量、灵活、易于嵌入为特点,适合快速开发和轻量级部署。Pce28资讯网——每日最新资讯28at.com

2.最大连接数和最大等待数

以 Spring Boot 框架默认的 Web 容器 Tomcat 为例,它能够同时处理多少个请求,其实是在 Spring Boot 框架中的 spring-configuration-metadata.json 文件中配置着,如下图所示:Pce28资讯网——每日最新资讯28at.com

Pce28资讯网——每日最新资讯28at.com

打开此文件,搜索“server.tomcat.max-connections”(Tomcat 最大连接数)会得到以下结果:Pce28资讯网——每日最新资讯28at.com

Pce28资讯网——每日最新资讯28at.com

也就是说,默认情况下 Tomcat 允许的最大连接数是 8192(=8*1024)个。Pce28资讯网——每日最新资讯28at.com

那么,此时有人可能会认为,默认情况下 Spring Boot 同时能处理的请求数应该是 8192,如果你也是这样认为,那你就错了。为什么呢?Pce28资讯网——每日最新资讯28at.com

因为,虽然 Tomcat 可以允许最大的连接数是 8192,但是 Tomcat 还有一个最大等待数,也就是说,如果达到了 8192 之后,还有一个等待队列可以存放请求的连接,所以,Spring Boot 可以同时处理多少个连接,等于 Tomcat 的最大连接数加 Tomcat 的最大等待数。Pce28资讯网——每日最新资讯28at.com

那么,最大等待数是多少呢?Pce28资讯网——每日最新资讯28at.com

我们继续在 spring-configuration-metadata.json 文件中,搜索“server.tomcat.accept-count”(Tomcat 最大等待数),搜索结果如下图所示:Pce28资讯网——每日最新资讯28at.com

Pce28资讯网——每日最新资讯28at.com

也就是说,默认情况下,Tomcat 最大等待数为 100 个。Pce28资讯网——每日最新资讯28at.com

3.同时处理请求数

所以得出结论:默认情况下 Spring Boot 能够同时处理的请求数=最大连接数(8192)+最大等待数(100),结果为 8292 个。Pce28资讯网——每日最新资讯28at.com

当然,这两个值是可以在 Spring Boot 配置文件中修改的,如下配置所示:Pce28资讯网——每日最新资讯28at.com

server:  tomcat:    max-connections: 2000 # 最大连接数    accept-count: 200 # 最大等待数

4.扩展知识:设置Web容器

Spring Boot 框架如何设置 Web 容器为 Jetty 或 Undertow 呢?接下来,我们来看一下。Pce28资讯网——每日最新资讯28at.com

(1)设置容器为Jetty

要设置 Spring Boot 框架的 Web 容器为 Jetty,只需要修改 pom.xml 文件即可,如下配置所示:Pce28资讯网——每日最新资讯28at.com

<dependencies>    <!-- Spring Boot Starter Web 但排除Tomcat -->    <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>    <!-- 添加Jetty起步依赖 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-jetty</artifactId>    </dependency></dependencies>

也就是说,只需要将默认的 tomcat 排除掉,添加 jetty 的依赖即可。Pce28资讯网——每日最新资讯28at.com

(2)设置容器为Undertow

要设置 Spring Boot 框架的 Web 容器为 Undertow 的思路和上面 Jetty 的实现思路相同,只需要修改 pom.xml 文件即可,如下配置所示:Pce28资讯网——每日最新资讯28at.com

<dependencies>    <!-- Spring Boot Starter Web 但排除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>    <!-- 添加Undertow起步依赖 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-undertow</artifactId>    </dependency></dependencies>

本文链接:http://www.28at.com/showinfo-26-90661-0.html京东面试:SpringBoot同时可以处理多少请求?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Java 反射:让你更优雅的使用框架!

下一篇: 敏捷的数据工程实践

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
Top