有个服务出现了 504,你觉得这个服务可能是有哪些问题?

出现状态码 504 ,可能有哪些问题?

  • 网络异常

    • 网络丢包
    • 带宽被占满
  • 死锁,比如你提供的API接口中根据id更新某条数据时,正好线上在手动执行一个批量更新数据的sql语句,该sql语句在一个事务中,并且刚好也在更新那条sql语句,可能会出现死锁的情况。由于该sql语句执行时间很长,会导致API接口的那次更新数据操作,长时间被数据库锁住,没法即使返回数据,而出现接口超时问题。

  • 慢查询 sql,看看有没有慢sql,或者有时候会走错索引甚至不走索引,可以使用 force index,强制走哪条索引

  • 接口发生死循环

    • 普通死循环 while(true) 在CAS自旋锁中常见
    • 无限递归
  • 线程池溢出,我们调用的API接口,有时候为了性能考虑,可能会使用线程池异步查询数据,最后把查询结果进行汇总,然后返回。
    在这里插入图片描述
    调用远程接口总耗时 200ms = 200ms(即耗时最长的那次远程接口调用)但如果用户请求太多,线程池中已有的线程处理不过来,线程池会把多余的请求,放到队列中排队,等待空闲线程的去处理。如果队列中排队的任务非常多,某次API请求一直在等待,没办法得到及时处理,就会出现接口超时问题。考虑是否核心线程数过小或者多种业务共用了线程池

  • 接口超时时间设置过短,合理设置连接超时时间和读超时时间,业务并发量大的时候设置超时时间短一点,设置成秒级或者毫秒级,业务并发量小的时候设置稍长一点,连接超时时间设置为10s,读超时时间设置为20s

  • 一次性返回的数据过多,比如调用第三方API更新数据库的时候,一次性批量更新太多太多的数据,更新时间还相同

  • 传入参数过多,比如说根据id集合批量查询分类接口,传入了几千甚至几万的id

  • 服务OOM 了

  • 在 debug

参考资料:
面试又跪了,504 错误码是什么问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值