java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot同时处理请求

详解SpringBoot同时可以处理多少请求

作者:苏生Susheng

在日常操作中,相信很多人在SpringBoot能同时处理多少请求问题上存在疑惑,本文就来详细的介绍一下,感兴趣的可以了解一下

问题

之前看到过一个面试题:SpringBoot同时可以处理多少请求?

Web三大容器

三者区别

Tomcat

Undertow

Jetty

小结

特性TomcatJettyUndertow
出现时间1999年1994年2008年
支持的协议HTTP, HTTPS, AJPHTTP, HTTPS, SPDY, AJPHTTP, HTTPS, SPDY
内存占用相对较大相对较小相对较小
启动速度相对较慢相对较快相对较快
性能中等
异步支持支持支持支持
部署方式WAR, JAR, 打包为可执行JARWAR, JAR, 打包为可执行JARWAR, JAR, 打包为可执行JAR
可嵌入性支持支持支持
社区支持非常活跃活跃活跃
成熟度成熟成熟较新但持续发展

总的来说

最大连接数和最大等待数

以 Spring Boot 框架默认的 Web 容器 Tomcat 为例,它能够同时处理多少个请求,其实是在 Spring Boot 框架中的 spring-configuration-metadata.json 文件中配置着

在这里插入图片描述

打开此文件,搜索“server.tomcat.max-connections”(Tomcat 最大连接数)会得到以下结果:

在这里插入图片描述

也就是说,默认情况下 Tomcat 允许的最大连接数是 8192(=8*1024)个。

注意!! 虽然 Tomcat 可以允许最大的连接数是 8192,但是 Tomcat 还有一个最大等待数,也就是说,如果达到了 8192 之后,还有一个等待队列可以存放请求的连接,所以,Spring Boot 可以同时处理多少个连接,等于 Tomcat 的最大连接数加 Tomcat 的最大等待数。

搜索“server.tomcat.accept-count”(Tomcat 最大等待数),搜索结果如下图所示

在这里插入图片描述

也就是说,默认情况下,Tomcat 最大等待数为 100 个。

同时处理请求数

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

拓展:设置Web容器

pring Boot 框架如何设置 Web 容器为 Jetty 或 Undertow 呢

设置容器为Jetty

要设置 Spring Boot 框架的 Web 容器为 Jetty,只需要修改 pom.xml 文件即可,如下配置所示:

<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 的依赖即可。

设置容器为Undertow

要设置 Spring Boot 框架的 Web 容器为 Undertow 的思路和上面 Jetty 的实现思路相同,只需要修改 pom.xml 文件即可,如下配置所示:

<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>

到此这篇关于详解SpringBoot同时可以处理多少请求的文章就介绍到这了,更多相关SpringBoot同时处理请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文