news 2026/5/2 4:50:15

改成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/30 23:58:55

shadcn-vue多设备适配终极指南:5步构建完美响应式界面

shadcn-vue多设备适配终极指南&#xff1a;5步构建完美响应式界面 【免费下载链接】shadcn-vue Vue port of shadcn-ui 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-vue 在当今多设备并存的数字环境中&#xff0c;构建能够无缝适配从手机到桌面各种屏幕尺寸的应…

作者头像 李华
网站建设 2026/4/29 17:33:11

Monaco Editor 完全指南:如何快速配置专业的代码编辑器

Monaco Editor 完全指南&#xff1a;如何快速配置专业的代码编辑器 【免费下载链接】monaco-editor-docs monaco-editor 中文文档 项目地址: https://gitcode.com/gh_mirrors/mo/monaco-editor-docs Monaco Editor 是微软开发的基于浏览器的代码编辑器&#xff0c;为 We…

作者头像 李华
网站建设 2026/4/25 10:39:30

VoiceFixer语音修复:3种模式让受损音频重获新生的完整指南

VoiceFixer语音修复&#xff1a;3种模式让受损音频重获新生的完整指南 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾经遇到过珍贵录音充满噪声、老旧音频失真严重&#xff0c;或者重要语音…

作者头像 李华
网站建设 2026/5/1 16:40:49

Poppins多语言几何字体应用指南:5个必知技巧与实战方案

Poppins多语言几何字体应用指南&#xff1a;5个必知技巧与实战方案 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins Poppins作为一款革命性的开源几何字体&#xff0c;完美融合了…

作者头像 李华
网站建设 2026/4/29 17:57:47

GPX Studio终极指南:免费在线GPX编辑器完全教程

GPX Studio终极指南&#xff1a;免费在线GPX编辑器完全教程 【免费下载链接】gpxstudio.github.io The online GPX file editor 项目地址: https://gitcode.com/gh_mirrors/gp/gpxstudio.github.io 想要寻找一款功能强大且完全免费的在线GPX编辑器来处理GPS轨迹文件&…

作者头像 李华