spring boot项目server.tomcat.max-threads配置失效问题

本文介绍了在SpringBoot项目中尝试通过配置`server.tomcat.max-threads=1`来实现每次请求使用不同线程的情况,但实际测试发现该配置并未生效。经过研究,了解到从Spring 2.3版本开始,应使用`server.tomcat.threads.max=1`进行配置。在修改配置并重启服务后,验证了新配置已成功限制服务器为单线程处理请求。

问题描述:
我们都知道,在一个spring boot项目中,我们的tomcat服务器启动以后,默认是以线程池的方式去循环利用线程的,那么如果我们想设置服务启动以后,始终以一个执行不同的请求,不同的任务,那么网上的说法就是配置tomcat服务器最大线程数server.tomcat.max-threads=1;然后我就配置了这个参数试一下

测试情况:
配置文件增加配置`server.tomcat.max-threads=1

第一次请求:
`
第一次请求
第二次请求:
在这里插入图片描述
很明显,两次请求执行的线程名字不一样,那么在tomcat线程池中,至少存在两个线程;所以server.tomcat.max-threads配置失效

查了资料以后发现spring 2.3版本以后不能再使用server.tomcat.max-threads了,我的项目用的是spring 2.6.7,所以没有生效,要使用server.tomcat.threads.max=1。

修改配置以后重启服务:
第一次请求:
在这里插入图片描述

第二次请求:
在这里插入图片描述
说明已经生效。

Connected to the target VM, address: '127.0.0.1:60811', transport: 'socket' 18:48:23.813 [main] INFO com.glcapsfiles.Application -- 🚀 Launching application at Thu Aug 14 18:48:23 CST 2025 ________ _______ ______ __ __ ________ ______ ________ / |/ \ / \ / | / |/ |/ |/ | $$$$$$$$/ $$$$$$$ |/$$$$$$ |$$ | $$ |$$$$$$$$/ $$$$$$/ $$$$$$$$/ $$ | $$ |__$$ |$$ | _$$/ $$ | $$ | $$ | $$ | $$ | $$ | $$ $$/ $$ |/ |$$ | $$ | $$ | $$ | $$ | $$ | $$$$$$$/ $$ |$$$$ |$$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ \__$$ |$$ \__$$ | $$ | _$$ |_ $$ | $$ | $$ | $$ $$/ $$ $$/ $$ | / $$ | $$ | $$/ $$/ $$$$$$/ $$$$$$/ $$/ $$$$$$/ $$/ :: ${application.name} :: (v) :: :: Spring Boot :: (v3.3.10) :: Java 17.0.14 :: Oracle Corporation :: :: PID 8844 @ ${hostname} :: 2025-08-14 18:48:24.590 | INFO | main | com.glcapsfiles.Application | Starting Application using Java 17.0.14 with PID 8844 (D:\Homework\gl-capsfiles-system\target\classes started by Administrator in D:\Homework\gl-capsfiles-system) 2025-08-14 18:48:24.592 | INFO | main | com.glcapsfiles.Application | No active profile set, falling back to 1 default profile: "default" 2025-08-14 18:48:26.656 | INFO | main | o.a.coyote.http11.Http11NioProtocol | Initializing ProtocolHandler ["http-nio-8100"] 2025-08-14 18:48:26.658 | INFO | main | o.a.catalina.core.StandardService | Starting service [Tomcat] 2025-08-14 18:48:26.658 | INFO | main | o.a.catalina.core.StandardEngine | Starting Servlet engine: [Apache Tomcat/10.1.39] 2025-08-14 18:48:26.719 | INFO | main | o.a.c.c.C.[Tomcat].[localhost].[/] | Initializing Spring embedded WebApplicationContext 2025-08-14 18:48:26.833 | INFO | main | c.glcapsfiles.config.DatabaseConfig | --------------------------------------------------------- DATASOURCE INITIALIZED URL: jdbc:mysql://127.0.0.1:3306/gl-capsfiles-system?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8 Pool: null connections (min=-1, max=-1) Timeout: 30000 ms --------------------------------------------------------- 2025-08-14 18:48:26.848 | INFO | main | c.glcapsfiles.config.MybatisConfig | MyBatis-Plus plugins initialized 2025-08-14 18:48:26.855 | INFO | main | c.glcapsfiles.config.MybatisConfig | SQL性能监控已启用(仅记录慢查询) _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.5.7 2025-08-14 18:48:27.343 | ERROR | main | o.s.b.w.e.tomcat.TomcatStarter | Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'securityConfig' defined in file [D:\Homework\gl-capsfiles-system\target\classes\com\glcapsfiles\config\SecurityConfig.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'securityAuditor' defined in file [D:\Homework\gl-capsfiles-system\target\classes\com\glcapsfiles\security\config\SecurityAuditor.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 2025-08-14 18:48:27.367 | INFO | main | o.a.catalina.core.StandardService | Stopping service [Tomcat] 2025-08-14 18:48:27.372 | WARN | main | o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext | Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server 2025-08-14 18:48:27.399 | ERROR | main | o.s.b.d.LoggingFailureAnalysisReporter | *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in com.glcapsfiles.security.config.SecurityAuditor required a bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' that could not be found. Action: Consider defining a bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' in your configuration. 2025-08-14 18:48:27.399 | ERROR | main | com.glcapsfiles.Application | ❌ Application failed to start! org.springframework.context.ApplicationContextException: Unable to start web server at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:170) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:619) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) at com.glcapsfiles.Application.main(Application.java:20) Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:147) at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:107) at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:520) at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:222) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:193) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:167) ... 6 common frames omitted Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfig' defined in file [D:\Homework\gl-capsfiles-system\target\classes\com\glcapsfiles\config\SecurityConfig.class]: Unsatisfied dependency expressed through constructor parameter 3: Error creating bean with name 'securityAuditor' defined in file [D:\Homework\gl-capsfiles-system\target\classes\com\glcapsfiles\security\config\SecurityAuditor.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1212) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:409) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205) at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:211) at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:202) at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:97) at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:86) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans(ServletWebServerApplicationContext.java:271) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize(ServletWebServerApplicationContext.java:245) at org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:52) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4467) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193) at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:870) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164) at org.apache.catalina.startup.Tomcat.start(Tomcat.java:437) at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:128) ... 11 common frames omitted Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityAuditor' defined in file [D:\Homework\gl-capsfiles-system\target\classes\com\glcapsfiles\security\config\SecurityAuditor.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1375) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1212) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1448) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1358) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 62 common frames omitted Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.glcapsfiles.service.auth.SecurityAuditRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1894) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1411) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1358) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:904) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:782) ... 76 common frames omitted Disconnected from the target VM, address: '127.0.0.1:60811', transport: 'socket' Process finished with exit code 1
最新发布
08-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值