海量编程文章、技术教程与实战案例

网站首页 > 技术文章 正文

Spring Boot打包成JAR后!内置Tomcat你真的懂吗?

yimeika 2025-07-28 22:51:48 技术文章 1 ℃

“刚上线就被流量打崩,Tomcat还在慢吞吞地冒蓝条。”

听起来像段子,却是很多后端面试时的小剧本。

根源不是并发太高,而是开发者把Spring Boot跑起来就以为万事大吉,根本没动过那口“内置Tomcat”的锅。

先看清差别

传统Tomcat=巨无霸:装好200 MB,拖到服务器,再配 server.xml。

Spring Boot 内置Tomcat=乐高小人:35 MB JAR 自带,双击就能跑。

省掉的不是“功能”,而是“没必要的零件”。

启动时用了什么黑科技?

IDE 点 Run 时其实悄悄调用了
TomcatServletWebServerFactory。

Spring Boot 先判断是 web 项目,再注册 bean,像搭积木一样把 Tomcat 实例塞进 IOC 容器。

两步搞定:

1. @ConditionalOnClass 校验 jar 里有没有 tomcat.class;

2.
TomcatServletWebServerFactory 启动 Connector,端口8080直接绑定。

调优不是玄学

线上默认线程200,高并发秒转圈。

把 server.tomcat.max-threads调到800,数据库不挂的话QPS翻3倍。

再加
server.tomcat.max-connections=15000,压测就不容易吃502。

注意把 connection-timeout 从20000改到5000,寄生虫连接能迅速踢出去。

三板斧避坑

1. 想用 JSP?

打成 JAR 后直接 404,得换成 WAR,或者转身拥抱 Thymeleaf。

2. server.port=0,测试环境让操作系统给口饭吃,再也不担心多实例冲突。

3. 自定义 Filter 忘写了@ServletComponentScan?

放心,它不会提示,直接隐形。

一句话总结

Spring Boot 省事是真,偷懒翻船也是真。

把内置Tomcat当成小透明,最后赔上的就是在线用户的耐心。

最近发表
标签列表