客户端一段时间不请求,再次请求有几率失败

Blade 未结 2 1458
wiekun
wiekun 剑圣 2020-10-10 14:16

一、该问题的重现步骤是什么?

1. 浏览器一段时间不请求,再次请求有失败几率。重新请求恢复正常,有时候挂着一晚上有好几个刷新token的请求都会失败。

2. 环境是k8s部署的,跟踪了下日志,请求经过了网关到达了具体的服务。

3.看了下,失败时候只有Request Start  没有Response Start,没有异常信息抛出,可以看下面的两张图。

4.目前只在浏览器saber前端发现了这个。用postman暂未发现。试过前几秒用postman正常访问的接口,换了长时间不操作的saber也会超时,前端未改过源码,用原版saber尝试也有这个问题。

5.nginx 提示是499,应该是超时主动断开了连接。


6.大部分出现都是长时间无操作页面情况下,极小几率正常操作时发生。现在目前不能确定是saber前端的问题,还是后端的问题。


7.现在设置了超时后10秒重新请求,可以看到图2   13:39:13 请求无返回,十秒后13:39:25请求就正常返回了


1.png

2.png





2条回答
  • 2020-10-10 16:30

    gateway里加了超时5秒断开,发现是转发到具体服务里无返回造成的。

    而且自带的接口也有这个现象

    88.png


    9.png

    0 讨论(0)
  • 2020-10-11 22:57

    先这么试试:

     1. 选择几组接口用postman模拟测试

     2. 把token过期时间先调整至3天

     3. 第一天用postman获取token

     4. 第三天携带token,访问曾经出问题的接口

     5. 多测试几组,看看是否会有超时的情况

     6. 毕竟这是小概率事件,所以需要多做模型采集,进行和saber比对

     7. 极小概率发送也有可能是网络波动导致

     8. 还有一种办法可以曲线救国,那就是拓展下axios.js的封装,当第一次接口返回超时的时候,再次调用一次,若第二次还是超时则返回错误。这样如果第一次是超时第二次成功,则可以避免这个问题

    作者追问:2020-10-12 14:42

    今天又测试了几次,用postman确实没问题,saber会不定时出现,也很奇怪。

    我把undertow换成了tomcat依然有这个问题,对比了下你们体验网站和我们的请求,发现少了keep alive。

    怀疑是不是k8s环境下saber的keep alive有问题,postman每次都是新建立连接。



    作者追问:2020-10-12 14:49

    现在暂时解决办法是,gateway层面加上了超时5秒重试,只要是连接超时的报错就自动重试两次,感觉这也不是长久办法。

    55.png

    0 讨论(0)
提交回复