当前位置:   article > 正文

springboot内置的tomcat 支持最大的并发量_springboot最大并发量

springboot最大并发量

SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。支持的并发量是指连接数,也就是说 支持最大并发量是一万(默认)


Tomcat有两种处理连接的模式,
1,是BIO,一个线程只处理一个Socket连接,
2,是NIO,一个线程处理多个Socket连接。
由于HTTP请求不会太耗时,而且多个连接一般不会同时来消息,所以一个线程处理多个连接没有太大问题。一个线程处理多个连接数会很慢 有可能会超时


默认内嵌Tomcat配置:

server.tomcat.accept-count:等待队列长度,当可分配的线程数全部用完之后,后续的请求将进入等待队列等待,等待队列满后则拒绝处理,默认100。
server.tomcat.max-connections:最大可被连接数,默认10000
server.tomcat.max-threads:最大工作线程数,默认200,
server.tomcat.min-spare-threads:最小工作线程数,初始化分配线程数,默认10

  • 1
  • 2
  • 3
  • 4
  • 5

默认配置下,连接超过10000后会出现拒绝连接情况

默认配置下,触发的请求超过200+100后拒绝处理(最大工作线程数+等待队列长度)


如果默认配置无法满足当前需求 可以自己调优 可以手动修改配置来进行处理并发
修改pro文件


server.port=7001

server.tomcat.accept-count=1000

server.tomcat.max-connections=10000

server.tomcat.max-threads=500

server.tomcat.min-spare-threads=100

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

然后 打包重启项目

kill -9 9545   //杀死进程
ps -ef | grep java   //查看项目启动的端口
pstree -p 7968 | wc -l    //查看进程数
  • 1
  • 2
  • 3

我们也可以使用配置文件, 可以新增WebServerConfiguration.java文件


import org.apache.catalina.connector.Connector;

import org.apache.coyote.http11.Http11NioProtocol;

import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.server.ConfigurableWebServerFactory;

import org.springframework.boot.web.server.WebServerFactoryCustomizer;

import org.springframework.stereotype.Component;


//当Spring容器内没有TomcatEmbeddedServletContainerFactory这个bean时,会吧此bean加载进spring容器中

@Component

public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {

    @Override

    public void customize(ConfigurableWebServerFactory configurableWebServerFactory) {

            //使用对应工厂类提供给我们的接口定制化我们的tomcat connector

        ((TomcatServletWebServerFactory)configurableWebServerFactory).addConnectorCustomizers(new TomcatConnectorCustomizer() {

            @Override

            public void customize(Connector connector) {

                Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();

                //定制化keepalivetimeout,设置30秒内没有请求则服务端自动断开keepalive链接

                protocol.setKeepAliveTimeout(30000);

                //当客户端发送超过10000个请求则自动断开keepalive链接

                protocol.setMaxKeepAliveRequests(10000);

            }

        });

    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

备注:
MySQL 数据库 QPS 容量问题:

主键查询: 千万级别数据 == 1-10 ms
唯一索引查询: 千万级别数据 == 10-100 ms
非唯一索引查询: 千万级别数据 == 100-1000ms
无索引数据: 百万级别数据 == 1000ms+
MySQL 数据库 TPS 容量问题:

非插入的更新删除操作: 同查询
插入操作: 1w~10w tps(依赖配置优化)

原文链接:https://blog.csdn.net/yin__ren/article/details/93331528

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52524
推荐阅读
相关标签
  

闽ICP备14008679号