在`SpringBoot`
项目中通常我们没有处理并发问题,但是使用项目本身还是支持一定的并发量,因为在SpringBoot
中内嵌Tomcat
容器,而Tomcat
在spring-configuration-metadata.json
文件中设置了关于并发的默认配置:
=========================================================================
其中有这段代码
{
"name": "server.tomcat.max-connections",
"description": "“服务器在任何给定时间接受和处理的最大连接数。",
"defaultValue": 8192
},
{
"name": "server.tomcat.accept-count",
"description": "当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度。",
"defaultValue": 100
},
{
"name": "server.tomcat.max-http-form-post-size",
"description": "http使用Post请求时候的表达最大容量。",
"defaultValue": "2MB"
},
{
"name": "server.tomcat.max-keep-alive-requests",
"description": "在连接关闭之前可以管道化的最大HTTP请求数。",
"defaultValue": 100
},
{
"name": "server.tomcat.threads.max",
"description": "工作线程的最大数量。",
"defaultValue": 200
},
{
"name": "server.tomcat.threads.min-spare",
"description": "工作线程的最小数量。",
"defaultValue": 10
},
{
"name": "server.servlet.session.timeout",
"description": "会话超时。如果未指定持续时间后缀,将使用秒。",
"defaultValue": "30m" // 这里m表示分钟,s表示秒
},
=========================================================================
在默认配置下:
在默认情况下当连接数超过8192
时,就会出现拒绝连接。
最小线程数量为10
,最大线程数量为200
,等待队列长度设置为acceptCount=100
,当可分配的线程数全部用完之后,后续的请求将进入等待队列等待,等待队列满后则拒绝处理。
而这些默认配置可以在配置文件中进行修改,比如:
## 服务器最大连接数,默认8192
server.tomcat.max-connections=10000
## 等待队列长度,默认100。
server.tomcat.accept-count=1000
## 最大工作线程数,默认200。(4核8g内存,线程数经验值800。)
server.tomcat.threads.max=800
## 最小工作空闲线程数,默认10。(适当增大一些,以便应对突然增长的访问量)
server.tomcat.threads.min-spare=100
=========================================================================
spring boot是如何保证线程安全的?
https://blog.csdn.net/w13966597931/article/details/126734480
===========================================================================================================================================================================================================================