Swagger 获取服务 500
-
描述:swagger 服务上拉取(某一个)服务文档报 500 错误,
NullPointerException
-
解决:经排查,在注册中心上发现启了几个相同的服务,有些是本地服务,访问不通,自然无法拉取文档信息。Swagger 测试请先确保服务端能访问到你的客户端,且本地开发需加上工号后缀以区分服务器上的服务。
Swagger 上看不到服务
-
描述:服务已注册到注册中心,但 Swagger 列表里看不到自己的服务
排查思路:
-
首先点击注册中心上的实例,看是否能访问通
-
如果能访问通,再到
swagger
所在服务器上ping ip
试试,看能否 ping 通 -
一般注册中心可以看到本地服务,但 swagger 上看不到,或者刷新权限也返回 500 错误,都是由于服务器上无法访问到你本地服务导致的。
-
检查服务路由是否已配置
-
检查路由配置的服务名(
serviceId
)与spring.application.name
是否一致,即注册中心显示的服务名与路由对应的服务名必须一致。 -
检查
hzero_admin
库下hadm_service
、hadm_service_route
表是否有服务和对应的服务路由信息,正常情况下,服务启动后会自动更新服务路由信息。 -
最后一步,如果没有可手动调用
hzero-admin
服务接口创建,或者在服务治理 > 服务路由
功能下维护服务路由(注:创建路由的接口是需要管理员权限的)。
虚拟机内服务IP无法访问
- 描述:基础服务部署在虚拟机中,注册中心可访问,本地服务可注册上去,但是服务无法访问。访问实例IP地址也无法访问。
- 定位:基础服务部署在虚拟机中,虚拟机中有多块网卡,服务注册的时候使用了宿主机不可访问的那块网卡,因此无法访问。
- 解决:可禁用不可访问的那块网卡,或者设置如下参数,设置其中一个即可
# 设置忽略的网卡 spring.cloud.inetutils.ignored-interfaces # 设置首选的网卡 spring.cloud.inetutils.preferred-networks
Swagger 文档未更新
-
描述:服务API调整后,Swagger 上未更新。
-
原因分析:正常情况下,服务启动后,Swagger 服务监听到服务注册后,会自动拉取服务文档刷新。未自动刷新成功可能是因为服务未自动下线,服务起好后,未监听到服务上线;或者服务还未启动成功,多次获取文档失败导致无法刷新。
-
解决:刷新Swagger信息
手动调用
hzero-swagger
服务下刷新swagger文档信息接口。