Linux 上跑 Swagger(Swagger UI / springfox / springdoc-openapi)很慢,通常不是“Swagger 本身慢”,而是环境 + 配置 + 扫描方式的问题。下面按最常见 → 次常见给你一套排查与优化方案。
现象
InetAddress.getLocalHost原因 Linux 默认会做 hostname → IP 的反向解析
解决
# 查看 hostname
hostname
# 编辑 hosts
sudo vim /etc/hosts
保证有这一行(非常重要):
127.0.0.1 localhost
127.0.0.1 your-hostname
✅ 改完立刻生效,重启应用即可
现象
/swagger-ui.html 慢原因 Springfox / springdoc 会扫描:
解决(强烈推荐)
@Bean
public GroupedOpenApi api() {
return GroupedOpenApi.builder()
.group("user-api")
.packagesToScan("com.xxx.user.controller")
.build();
}
或(springfox):
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
.paths(PathSelectors.any())
.build();
}
}
❌ 不要扫 com.xxx
springfox 已知问题
✅ 最佳实践:换 springdoc-openapi
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
✅ 优点:
现象
排查
free -h
top
jstat -gc pid
解决
-Xms512m -Xmx1024m
现象
swagger-ui-bundle.js解决:本地化 Swagger UI
springdoc:
swagger-ui:
path: /swagger-ui.html
或手动引入本地 JS(进阶)
优化建议
GroupedOpenApi.builder()
.group("order")
.pathsToMatch("/order/**")
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
你可以按顺序对照:
/etc/hosts 是否配置正确你可以直接贴:
top / free -h 输出我可以 直接告诉你哪一步最慢、怎么改。