GateWay网关访问服务出现503的问题解决

 

问题描述

在分布式服务中,使用GateWay网关进行服务请求路由的统一管理,它是系统对外的唯一入口。为了让网关能正常发送调用其他服务,我使用到了Nacos服务注册中心。

正是这样出现了,我通过服务端口,能正常访问接口返回数据,通过网关访问有时可以有时不行的情况(也就是出现503的状态码反馈)。

HTTP状态码503指的是web服务器不能处理HTTP请求。原因大致如下:

  • 站点遭到攻击,在超过限制时报503错误,待攻击停止就可以恢复了
  • 站点规模较大,并发请求过多,这种建议修改优化程序或需要升级更高类型主机
  • 程序有错误,在短时间内产生多次工作进程崩溃,会因为IIS7的快速肚胀防护功能而关闭程序池
  • 站点提供下载,当宽带超过限制时会报错,需要停止下载功能,后者升级主机解决

那么根据上面这四个原因我还是没有分析出为什么会出现这个问题。于是我开始一步步排查问题。

  1. 我首先认为是我GateWay网关,拦截配置的问题,可是我的情况是有时出现503,有时又能通过网关正常访问,所以暂时排除了这种情况。

  2. 是否本身的单体服务有问题,但是通过postman的测试,通过服务的端口访问接口,都能正常返回数据。所以也暂时排除这种情况。

  3. Nacos注册中心的问题。

那基本能确定是Nacos注册中心的问题了,但也不完全是Nacos的锅。

再次分析:

F12查看Network,请求的发送情况,发现OPTIONS预检请求是正常发送的,但发送真正的请求的时候出现了503的错误。如下图:

avator

avator

 

avator

我们可以通过错误提示很清晰的看到message的反馈,就是发现不了我的product服务。

和我们判断的没错是nacos的问题,于是我进入nacos查看服务是否注册成功。

这里就发现了一个很奇怪的现象,正常的我们刷新nacos的界面服务是不会掉的,但是我的product商品服务,一会有一会儿又没有,刚开始我发现了这个问题,但没有引起注意,也就导致这个问题之前一直没有得到解决。

解决

于是,我抱着再试一试的心态,将该服务的端口号从8001改为了8010,也就是改为了其他的数(或者修改一下服务名),这个服务就在nacos注册中心稳定了。(前提是确保你的服务Nacos配置没有问题)

这其实是一个很容易解决的bug,但是之前网上找过都没有得到好的解决。

让我想到了idea在使用过程中确实存在一些bug,常见的就是

  1. 创建继承maven项目数量多了之后,项目结构就会不一样,需要手动修改,或者更换项目名才能解决。

  2. 使用springboot的过程中有些端口无法使用,这种无法使用是由于idea和系统的问题,你能正常跑通你的项目,但是这个项目你无法通过客户端访问,只要访问就是500服务器错误。


同时这里强调,不是因为什么端口被占用的问题,端口如果被占用,连服务都是无法启动的,所以这就是一些简单又很坑人的地方。

如果您有幸看到了这篇文章,希望对您有帮助,解决到您的问题。

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值