万恶503

遇到问题不可怕,可怕的是问题来源广泛,不知从何下手,相信从事研发的小伙伴都会感同身受。

前段时间一直被503 service temporarily unavailable这个错误搞得焦头烂额,很多用户吐槽,操作页面不定时会弹出这个503的nginx错误,查询tomcat日志,没有异常信息,查询我们自己的nginx(注意:后面还有一个外部的nginx)日志,也未见异常。可是复现起来也有些难度,毕竟开发和测试环境都正常,只有生产环境不定时踩雷,为调试增加难度。

昨夜加班处理时,为了排查到底是tomcat将503的错误扔到nginx,还是nginx自己的503错误,特地在用户量偏少的时候,停止了自己内部服务器的nginx,然后发现还是不定时503,而且这个503页面居然还是提示是nginx的503。

 

 

那么,至此可以得出,应该不是我们内部nginx的问题,所以我开始查询tomcat的信息,jconsole连接远程后,发现tomcat的很多线程都是bio(tomcat7),所以一开始感觉是不是bio导致效率低下,所以将其协议换成httpNio,配置好tomcat的线程池,重启发现还是不定时报错,丈二和尚摸不着头脑,怀着疑惑做了个噩梦,第二天再查吧。

 

 

今日上班路上,突发奇想,我用httpClient发送get请求1000次,然后将响应503的这些信息拿出来看看,也许会有惊喜。果然,发现via(请求经过的协议)中出现一项SLB的信息。询问老大,才知道原来我们的系统,是通过域名转发至阿里云的负载均衡(Server Load Balanced,简称SLB),然后SLB中配置规则,将请求再转发至我们对应的web服务器。

那么问题来了,为啥SLB会出现503?

SLB也是基于nginx集群搭建的,阿里云上对SLB的服务有很多套餐,我们的套餐中QTS(每秒用户请求数)为1000,但是随着公司效益上升,用户量也逐渐上升,导致QTS可能会超出现有套餐上限,SLB就会拒绝这次请求,出现503。

 

 

果然,学无止境,借用某知名博主的话来说,会的越多,不会的越多!

 

欢迎大家和帝都的雁积极互动,头脑交流会比个人埋头苦学更有效!共勉!

公众号:帝都的雁

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当网关返回503错误时,可能有几个可能的原因。首先,一个常见的原因是上游服务不可用。这可能是由于服务器过载、网络问题或其他问题导致的。 另一个可能的原因是Istio Ingress Gateway的问题。你可以查看Istio Ingress Gateway的访问日志,以了解是否有任何错误或异常信息。这些日志可以帮助你定位问题所在。 此外,你还可以检查Ingress Gateway/Sidecar Envoy的日志,以了解是否有与503错误相关的信息。这些日志通常包含有关请求路由和代理的详细信息,可能有助于解决问题。 根据引用中的信息,如果你在使用springcloud2020版本,并且尝试使用Ribbon进行负载均衡,你可能会遇到503错误。这是因为springcloud2020版本已经弃用了Ribbon,并且在2021版本的nacos中删除了Ribbon的jar包。解决此问题的方法是添加以下依赖项到你的项目中: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> ``` 这将使用spring-cloud-starter-loadbalancer来进行负载均衡,以替代Ribbon。通过这样的方式,你可以解决503错误问题。 综上所述,当网关返回503错误时,你应该先检查上游服务的可用性,并查看Istio Ingress Gateway和Envoy的日志以获取更多的信息。此外,如果你使用的是springcloud2020版本,你需要添加spring-cloud-starter-loadbalancer依赖来解决503错误
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值