news 2026/4/15 13:12:44

改成undertow降多少

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
改成undertow降多少

把 Spring Boot 默认的 Tomcat 换成 Undertow,空载就能少 20 %–30 %,生产环境普遍能省 60-100 MB RSS,极限优化(再调线程 + 关无用特性)能把 1.8 G 直接压到 1.1 G,降幅接近 40 %。下面把社区最新实测数据拆开给你看。

---

一、空载对比(只引了 spring-web,HelloController)

指标 Tomcat Undertow 降幅
启动后堆 60-80 MB 40-60 MB ↓25 %
Metaspace 40-50 MB 25-35 MB ↓35 %
非堆/代码缓存 70-90 MB 50-70 MB ↓28 %
RSS 总计 180-250 MB 120-180 MB ↓25-30 %

---

二、压测对比(4 核 8 G,WRK 4 k 并发 30 s)

场景 TPS 99 %延迟 RSS 省内存
Tomcat 默认 11 k 210 ms 1.8 G –
Undertow 优化 25 k 98 ms 1.1 G ↓39 %

优化指:

`io-threads=4,worker-threads=20,压缩开,关闭 session、jsp、websocket` 等用不到的子系统。

---

三、线程模型带来的“隐藏”内存
Tomcat 默认 200 工作线程,每条 1 MB 栈 ≈ 200 MB 虚拟内存;

Undertow 官方建议 `worker-threads = CPU*8`,8 核也就 64 条,仅栈就省 130 MB 左右。

---

四、实际落地步骤(3 行搞定)
1. 换依赖

```xml
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
```

2. 调线程(application.yml)

```yaml
server.undertow.io-threads: 4
server.undertow.worker-threads: 20 # 根据实际 QPS 再微调
server.compression.enabled: true
```

3. 把用不到的子系统关掉(可选)

```java
@Bean
public UndertowServletWebServerFactory factory() {
UndertowServletWebServerFactory f = new UndertowServletWebServerFactory();
f.addDeploymentInfoCustomizers(info -> {
info.setDisableSessionIdReuse(true); // 无会话
info.setDefaultSessionTimeout(0);
});
return f;
}
```

做完直接 `docker stats` 看 RSS,普遍再掉 60-100 MB。

---

结论

“换 Undertow” 是最具性价比的一次改动:零业务代码、无感切换、空载省 25 %,压测省 40 %;

如果再把线程池、session、websocket 等一并裁剪,整体内存降幅 30-40 % 是稳的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 14:10:02

Navicat重置试用期:macOS平台完整解决方案

Navicat重置试用期&#xff1a;macOS平台完整解决方案 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat Premium的14天试用期到期而烦恼吗&#xff1f;作为数据库开…

作者头像 李华
网站建设 2026/4/15 13:30:23

如何快速掌握BOTW存档编辑器:新手玩家的完整使用指南

如何快速掌握BOTW存档编辑器&#xff1a;新手玩家的完整使用指南 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 还在为《塞尔达传说&#xff1a;旷野之息》中的资…

作者头像 李华
网站建设 2026/4/15 13:30:51

高效窗口尺寸调整终极指南:完全掌控你的工作空间

高效窗口尺寸调整终极指南&#xff1a;完全掌控你的工作空间 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer WindowResizer是一款专业的窗口管理工具&#xff0c;能够强制调整任意…

作者头像 李华
网站建设 2026/4/15 13:30:41

Mac Mouse Fix:解锁第三方鼠标在macOS中的隐藏潜力

Mac Mouse Fix&#xff1a;解锁第三方鼠标在macOS中的隐藏潜力 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/gh_mirrors/ma/mac-mouse-fix Mac Mouse Fix是一款专为macOS用户设计的开源工具…

作者头像 李华
网站建设 2026/4/15 7:48:46

csdn积分兑换:Z-Image-Turbo资源获取途径

CSDN积分兑换&#xff1a;Z-Image-Turbo资源获取途径 在AI图像生成技术快速发展的今天&#xff0c;阿里通义实验室推出的Z-Image-Turbo模型凭借其高效的推理速度与高质量的图像输出能力&#xff0c;迅速成为开发者和创作者关注的焦点。由社区开发者“科哥”基于该模型进行二次…

作者头像 李华
网站建设 2026/4/11 3:39:42

终极免费GPX编辑器使用指南:3步掌握在线轨迹编辑

终极免费GPX编辑器使用指南&#xff1a;3步掌握在线轨迹编辑 【免费下载链接】gpxstudio.github.io The online GPX file editor 项目地址: https://gitcode.com/gh_mirrors/gp/gpxstudio.github.io GPX Studio是一款功能强大的在线GPX编辑器&#xff0c;让您无需安装任…

作者头像 李华