温馨提示×

debian swagger如何减少内存

小樊
39
2026-10-04 17:07:52
栏目: 智能运维

在 Debian 上运行 Swagger(通常指 Swagger Editor / Swagger UI / Swagger Codegen,或基于 Node 的 swagger 服务)时,减少内存占用可以从运行方式、配置、依赖和服务拆分几个层面来做。下面按常见场景说明。


一、先确认你用的是哪种 Swagger

不同组件内存差异很大:

组件 常见内存问题
Swagger Editor (Node) 前端 + Node 服务,内存较高
Swagger UI 纯静态,最省内存
Swagger Codegen JVM,内存占用大
springfox / springdoc Spring 应用内嵌

最省内存方案:用 Swagger UI(静态)代替 Editor


二、最推荐:用静态 Swagger UI(几乎不占内存)

1. 安装

apt update
apt install nginx

2. 下载 Swagger UI

wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.x.zip
unzip v5.x.zip
cp -r swagger-ui-5.x/dist /var/www/html/swagger

3. 配置 API 地址

编辑:

/var/www/html/swagger/swagger-initializer.js

改为:

url: "/swagger.json"

✅ 优点:

  • 无 Node
  • 无 JVM
  • 内存 < 20MB

三、如果必须用 Swagger Editor(Node)

1. 限制 Node 内存

node --max-old-space-size=256 editor.js

或 Docker:

docker run -m 256m swaggerapi/swagger-editor

2. 关闭不必要的插件

编辑 config.js:

window.swaggerEditorConfig = {
  useBackendForCache: false,
  modelPropertyMapper: false
}

四、Swagger Codegen(JVM)内存优化

1. 限制 JVM 内存

export JAVA_OPTS="-Xms64m -Xmx256m"
java $JAVA_OPTS -jar swagger-codegen-cli.jar

2. 只生成需要的内容

-i api.yaml -l spring -o out --model-only

避免全量生成。


五、Spring 项目(springdoc / springfox)

1. 使用 springdoc(比 springfox 省内存)

<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>

2. 关闭启动时扫描

springdoc:
  api-docs:
    enabled: false

需要时再开。


六、系统层面优化(Debian)

1. 禁用 swap 抖动

sysctl vm.swappiness=10

2. 使用轻量 Web 服务

  • ✅ nginx
  • ❌ Tomcat(除非必须)

七、总结建议

如果你目标是“最少内存”:

  1. 用 Swagger UI + nginx
  2. 不用 Editor
  3. Codegen 不在服务中长期运行
  4. JVM 一定加 -Xmx

如果你能告诉我:

  • 用的是 Editor / UI / Codegen / Spring
  • 是否 Docker
  • Debian 版本

我可以直接给你一份最小内存运行配置。

0 踩